亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java Websocket與服務器的每個客戶端連接都創建新實例

Java Websocket與服務器的每個客戶端連接都創建新實例

慕無忌1623718 2021-04-16 18:41:15
我正在使用Java為客戶端創建WebSocket服務器以及Javascript和HTML。服務器成功啟動,并且可以接受來自WebSocket客戶端的連接,但是,每次客戶端連接時,它都在創建服務器的新實例。Code of Server:-import java.util.HashSet;import java.util.Set;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;@ServerEndpoint("/websocketendpoint")public class WsServer {    Set<Session> sessions = new HashSet<Session>();     int count = 0;    @OnOpen    public void onOpen(Session session){        System.out.println("Open Connection ...");        count+=1;         System.out.println(count); //On the logcat it shows only 1        sessions.add(session);        for(Session s: sessions)        {            System.out.println(s); //On the logcat it shows only session        }    }    @OnClose    public void onClose(){        System.out.println("Close Connection ...");    }    @OnMessage    public String onMessage(String message){        System.out.println("Message from the client: " + message);        String echoMsg = "Echo from the server : " + message;        return echoMsg;    }    @OnError    public void onError(Throwable e){        e.printStackTrace();    }}在第二個客戶端連接之后,它僅將1表示為一個計數,并且在上僅存儲了一個會話Set。我正在使用的技術:-Tomcat v9.0Eclipse Java EE IDE服務器用Java和客戶端用JavaScript用于WebSocket的javax.websocket。我的問題是我們如何才能停止這種情況并使客戶端僅連接到一個實例?
查看完整描述

2 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

查看WsServer的方法名稱。它僅適用于一個客戶端,因為函數不會發送與它們的連接ID。因此,請建立您的計數器static或將其移至其他班級。


查看完整回答
反對 回復 2021-04-28
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

這是默認行為。

嘗試@Singleton在之前添加注釋@ServerEndpoint。



查看完整回答
反對 回復 2021-04-28
  • 2 回答
  • 0 關注
  • 577 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號