日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java js websocket_js+java websocket记录

發布時間:2025/3/11 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java js websocket_js+java websocket记录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先websocket后臺需要在web服務器運行,所以先搭建一個web項目。websocket需要依賴其他的jar包,引入依賴

javaxjavaee-api7.0provided

新建一個類,該類建立一個服務端點 ServerEndpoint

importjavax.websocket.*;importjavax.websocket.server.PathParam;importjavax.websocket.server.ServerEndpoint;importjava.io.IOException;importjava.util.concurrent.ConcurrentHashMap;

/***@authorRice*@create2020/06/24 15:56*/@ServerEndpoint("/ws/{sid}")

public classWSServer {

privateSession session;private staticConcurrentHashMap ss= newConcurrentHashMap();private intoln;

@OnOpenpublic voidonOpen(Session session,@PathParam("sid") String sid){

oln++;this.session= session;ss.put(sid,session);}

@OnMessagepublic voidonMessage(String message ,Session session,@PathParam("sid") String sid ) throwsIOException {

Msg msg = Msg.getInstance(message);msg.setUser(sid);if(msg.getTid()==1){

privateChat(msg);return ;}

}

@OnClosepublic voidonClose(@PathParam("sid") String sid){

oln--;ss.remove(sid);}

@OnErrorpublic voidonError(Session session ,Throwable error){

System.out.println(error);}

private voidprivateChat(Msg msg) throwsIOException {

if(ss.containsKey(msg.getTsid())){

Session ts = ss.get(msg.getTsid());ts.getBasicRemote().sendText(Msg.forwordMSg(msg));}else{

this.session.getBasicRemote().sendText("對方不在線");}

}

}

前端(客戶端點):

ws = new WebSocket("ws://localhost:8080/wws/ws/"+_this.luser)

ws.onmessage=function(event){

let rm = JSON.parse(event.data);

if(!_this.msgs[rm.user]){

_this.$set(_this.msgs,rm.user,new Array());

}

_this.msgs[rm.user].push(rm.user+": "+rm.msg);

}

當客戶端點調用new Websocket時,會發起和服務端的連接。當websocekt的readystate變為1時,會觸發后端onopen事件,此時一般會將建立連接的session加入到管理的Map中,記錄session的名字和session.以此方便進行消息的轉發。

當客戶端readystate=1(連接成功),客戶端可以進行發消息,關閉連接。當客戶端調用websocket.send(String msg),后臺會觸發onMessage方法并且把消息以及發消息的session傳入到該方法中進行處理。通常客戶端發送的消息需要自行規定數據報格式,如JSON,給后臺進行解析。

客戶端點同樣的需要進行onmessage方法的處理,當服務端往客戶端session發送消息,同樣會觸發客戶端的onmessage方法。以此達到即時溝通

總結

以上是生活随笔為你收集整理的java js websocket_js+java websocket记录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。