導航:首頁 > 編程語言 > javawebsocket聊天

javawebsocket聊天

發布時間:2022-05-04 19:16:34

java如何實現一對一聊天謝謝了。

WebSocket 是 HTML5 開始提供的一種在單個 TCP 連接上進行全雙工通訊的協議。
WebSocket 使得客戶端和伺服器之間的數據交換變得更加簡單,允許服務端主動向客戶端推送數據。在 WebSocket API 中,瀏覽器和伺服器只需要完成一次握手,兩者之間就直接可以創建持久性的連接,並進行雙向數據傳輸。

在 WebSocket API 中,瀏覽器和伺服器只需要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。

Ⅱ 怎樣用java web和websocket實現網頁即時通訊

使用7z格式壓縮上傳
下載1: http://vdisk.weibo.com/s/D7LHb/1369631064
下載2: att.newsmth.net/att.php?p.75.25665.766.7z

Java版源代碼下載:http://vdisk.weibo.com/s/I26Jq
(有些網友對C++如何實現感興趣,推薦一下Poco帶的WebSocket功能,把Java源代碼翻譯成C++就行了)

1. 說明:

utf8版本,支持各種語言版本的windows系統
程序內嵌資料庫
用戶帳號非明文存儲
在Firefox/Chrome瀏覽器測試通過,建議使用Chrome,Firefox不支持mp3的消息提示音
2. 現有功能

注冊/登錄/搜索/添加好友(需要雙方互相添加對方為好友,才能互相聊天)
抖動窗口

兩種狀態,登錄/離線
3.可擴展的功能

使用Windows域用戶帳號,無需注冊
收發離線信息
查看歷史信息
新消息提示
群聊
共享文件

4. (可能)存在的問題

並發性未作充分測試
添加好友的確認

5. 適用的場景

學校
小公司

6.使用
解壓後雙擊執行start.bat,將自動進入初始界面,如下圖
默認使用80埠,若80埠已被佔用,修改start.bat中的setserver_port=80

雙擊左上角圖標,彈出對話框,可以選擇注冊

注冊成功

登錄

搜索好友,如不提供搜索條件,則返回所有已注冊用戶

添加好友

添加好友提示

聊天

Ⅲ java websocket web網頁聊天怎麼實現

websocket 是反向推送的一種類型
聊天需要實時性高,在A第一次發送信息給B的時候需要建立websocket的連接,A向B發送信息就通過websocket完成。
A如果關閉窗口則websocket斷開連接

Ⅳ java socket 怎麼給websocket發信息

1.InitServlet

該類主要是用來初始化構造將來存儲用戶身份信息的map倉庫,利用其初始化方法Init 初始化倉庫, 利用其靜態方法getSocketList 獲得對應的用戶身份信息。

webSocket ,我認為MessageInbound 用來識別登錄人的信息,用它來找到對應的人,推送消息。每次登錄都會產生一個MessageInbound。

這里的HashMap<String,MessageInbound> :string 存儲用戶session的登錄id,MessageInbound存儲 推送需要的身份信息。以上屬於個人口頭話理解。

packagesocket;

importjava.nio.CharBuffer;
importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;

importjavax.servlet.ServletConfig;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;

importorg.apache.catalina.websocket.MessageInbound;

{

=-3163557381361759907L;

//privatestaticList<MessageInbound>socketList;
privatestaticHashMap<String,MessageInbound>socketList;

publicvoidinit(ServletConfigconfig)throwsServletException{
//InitServlet.socketList=newArrayList<MessageInbound>();
InitServlet.socketList=newHashMap<String,MessageInbound>();
super.init(config);
System.out.println("Serverstart============");
}

publicstaticHashMap<String,MessageInbound>getSocketList(){
returnInitServlet.socketList;
}
/*publicstaticList<MessageInbound>getSocketList(){
returnInitServlet.socketList;
}
*/}

2.MyWebSocketServlet

websocket用來建立連接的servlet,建立連接時,首先在session獲取該登錄人的userId,在調用MyMessageInbound構造函數傳入userId

packagesocket;

importjava.io.IOException;
importjava.io.PrintWriter;
importjava.nio.CharBuffer;

importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;

importorg.apache.catalina.websocket.StreamInbound;
importorg.apache.catalina.websocket.WebSocketServlet;
/**
*
*@ClassName:MyWebSocketServlet
*@Description:建立連接時創立
*@authormangues
*@date2015-7-19
*/
{

publicStringgetUser(HttpServletRequestrequest){
StringuserName=(String)request.getSession().getAttribute("user");
if(userName==null){
returnnull;
}
returnuserName;
//return(String)request.getAttribute("user");
}
@Override
(Stringarg0,
HttpServletRequestrequest){
System.out.println("##########");
returnnewMyMessageInbound(this.getUser(request));
}

}

3.onOpen方法調用InitServlet的map身份倉庫,

放入用戶userId 和 對應該登錄用戶的websocket身份信息MessageInbound (可以用userId來尋找到推送需要的 身份MessageInbound)

onTextMessage :用來獲取消息,並發送消息

packagesocket;

importjava.io.IOException;
importjava.nio.ByteBuffer;
importjava.nio.CharBuffer;
importjava.util.HashMap;

importorg.apache.catalina.websocket.MessageInbound;
importorg.apache.catalina.websocket.WsOutbound;

importutil.MessageUtil;

{

privateStringname;
publicMyMessageInbound(){
super();
}

publicMyMessageInbound(Stringname){
super();
this.name=name;
}

@Override
protectedvoidonBinaryMessage(ByteBufferarg0)throwsIOException{
//TODOAuto-generatedmethodstub

}

@Override
protectedvoidonTextMessage(CharBuffermsg)throwsIOException{
//用戶所發消息處理後的map
HashMap<String,String>messageMap=MessageUtil.getMessage(msg);//處理消息類
//上線用戶集合類map
HashMap<String,MessageInbound>userMsgMap=InitServlet.getSocketList();

StringfromName=messageMap.get("fromName");//消息來自人的userId


StringtoName=messageMap.get("toName");//消息發往人的userId
//獲取該用戶
MessageInboundmessageInbound=userMsgMap.get(toName);//在倉庫中取出發往人的MessageInboundif(messageInbound!=null){//如果發往人存在進行操作
WsOutboundoutbound=messageInbound.getWsOutbound();


Stringcontent=messageMap.get("content");//獲取消息內容
StringmsgContentString=fromName+""+content;//構造發送的消息

//發出去內容
CharBuffertoMsg=CharBuffer.wrap(msgContentString.toCharArray());
outbound.writeTextMessage(toMsg);//
outbound.flush();
}/*for(MessageInboundmessageInbound:InitServlet.getSocketList()){
CharBufferbuffer=CharBuffer.wrap(msg);
WsOutboundoutbound=messageInbound.getWsOutbound();
outbound.writeTextMessage(buffer);
outbound.flush();
}*/

}

@Override
protectedvoidonClose(intstatus){
InitServlet.getSocketList().remove(this);
super.onClose(status);
}

@Override
protectedvoidonOpen(WsOutboundoutbound){
super.onOpen(outbound);
//登錄的用戶注冊進去
if(name!=null){
InitServlet.getSocketList().put(name,this);
}
//InitServlet.getSocketList().add(this);
}


}

4.消息處理類,處理前端發來的消息

packageutil;

importjava.nio.CharBuffer;
importjava.util.HashMap;
/**
*
*@ClassName:MessageUtil
*@Description:消息處理類
*@authormangues
*@date2015-7-19
*/
publicclassMessageUtil{

publicstaticHashMap<String,String>getMessage(CharBuffermsg){
HashMap<String,String>map=newHashMap<String,String>();
StringmsgString=msg.toString();
Stringm[]=msgString.split(",");
map.put("fromName",m[0]);
map.put("toName",m[1]);
map.put("content",m[2]);
returnmap;
}
}

Ⅳ 使用java+js如何實現網頁在線聊天功能

聊天用到的問題其實就是websocket的頻道訂閱機制,這里需要用到單人聊天就是相互訂閱對方的頻道然後進行消息推送。

Ⅵ javaweb如何在網頁實現聊天功能

後端技術就沒什麼好說的了,最簡單的是利用application范圍保存聊天記錄.要求高一點可以是用類似redis的技術.

前端的話,
1,最簡單的,通過刷新頁面,每次請求消息記錄頁面.
2.Ajax技術.(1)Ajax輪詢,(2)Ajax長連接.
3.websocket.類似socket,效率很高.需要Tomcat7才能支持.並且要求瀏覽器的版本較高.

Ⅶ 基於tomcat7,java,ext,websocket 怎麼和指定的一個人進行聊天

簡單來說,extjs <-> java/tomcat websocket鏈接。java端維護鏈接列表。extjs端發送信息,至少包含from to message三個。由extjs做客戶端實現GUI,用戶輸入具體發送什麼消息,發送給誰,完成後通過websocket鏈接發送到java端,Java端根據to信息選擇相應的websocket鏈接發送到另一個GUI端,然後由extjs的處理程序在另一個GUI上顯示。當然要一個最小的功能集至少要有:
發送:參數 from to message, from是為了另一個GUI可以實現類似reply的功能,或者類似私聊窗口的功能。to代表目標,可以擴展意義為組群發或者全員群發等
登錄: 參數 name
退出:無參數
獲取在線用戶列表:無參數

java/tomcat端維護的websocket列表至少要是一個map的形式,即name->websocket的map

Ⅷ 想求一個java聊天小程序,使用圖形用戶界面和socket通訊 功能:可以實現兩個人私聊功能和多人聊天功能。

我只介紹思路:
使用websocket創建ws伺服器,nat123解析一個地址,分配一個埠給他用,發布到外網。
客戶端撥通地址 登陸 接入websocket服務,心跳機制要做好,上下線掉線更新列表,注冊存儲用戶信息,更新用戶列表。
客戶端可以發起群聊、私聊、收發文件、分享,甚至發送伺服器消息,然後反饋消息,響應遠程服務事件。
這就是一個聊天軟體所做的事情,我介紹websocket可以響應多平台,多端通信。

Ⅸ java消息推送websocket怎麼實現

java消息推送websocket實現原理:在實現websocket連線過程中,需要通過瀏覽器發出websocket連線請求,然後伺服器發出回應,這個過程通常稱為「握手」 。在 WebSocket API,瀏覽器和伺服器只需要做一個握手的動作,然後,瀏覽器和伺服器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。
在以前的消息推送機制中,用的都是 Ajax 輪詢(polling),在特定的時間間隔由瀏覽器自動發出請求,將伺服器的消息主動的拉回來,這種方式是非常消耗資源的,因為本質還是http請求,而且顯得非常笨拙。而WebSocket 在瀏覽器和伺服器完成一個握手的動作,在建立連接之後,伺服器可以主動傳送數據給客戶端,客戶端也可以隨時向伺服器發送數據。
WebSocket協議是基於TCP的一種新的網路協議。實現了瀏覽器與伺服器全雙工(full-plex)通信——允許伺服器主動發送信息給客戶端。也可以選擇第三方推送平台來實現,比如極光推送就不錯。

閱讀全文

與javawebsocket聊天相關的資料

熱點內容
蘋果手機dcim文件夾顯示不出來 瀏覽:430
如何壓縮文件夾聯想電腦 瀏覽:583
程序員的學習之旅 瀏覽:440
apkdb反編譯 瀏覽:922
雪花演算法為什麼要二進制 瀏覽:825
在文檔中打開命令行工具 瀏覽:608
android圖標尺寸規范 瀏覽:369
python實用工具 瀏覽:208
流量計pdf 瀏覽:936
科東加密認證價格 瀏覽:532
dos命令讀文件 瀏覽:996
成為程序員需要什麼學歷 瀏覽:672
pdf農葯 瀏覽:228
canal加密 瀏覽:497
日本安卓系統和中國有什麼區別 瀏覽:137
linux命令行修改文件 瀏覽:838
從編譯和解釋的角度看 瀏覽:649
徐志摩pdf 瀏覽:651
夏天解壓球視頻 瀏覽:304
全封閉壓縮機qd91h 瀏覽:668