1

WebSockets を介してチャットを書きました。サーバー側は Java (Tomcat) で記述され、クライアントは JavaScript で記述されます。

すべて正常に動作します。しかし、ローカルネットワークにある2台のマシンからサーバーに接続しようとすると(ルーターの下にあり、外部IPが1つあります)、サーバーからデータを受信するクライアントは1つだけです。

接続 ( socket.onopen() ) は両方で機能します。socket.send(data) も両方のクライアントで機能します。

ただし、メッセージの受信 ( socket.onmessage() ) は、最初に接続されたクライアントでのみ機能します。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

問題はサーバー部分にありました。

ArrayList にあるすべての利用可能な接続に受信メッセージをブロードキャストしたかったのです。

最初のユーザーにメッセージを送信した後、受信したメッセージが空になりました。メッセージは送信されましたが、空の文字列でした。

私の英語は下手です。だから私はうわーします:

前 :

 protected void onTextMessage(CharBuffer message) throws IOException {
  // List<MessageInbound> connections
  for (MessageInbound user : connections ) 
   user.getWsOutbound.writeTextMessage(message);
 } 

後:

 protected void onTextMessage(CharBuffer message) throws IOException {
  String msg = message.toString();
  for (MessageInbound user : connections ) 
   user.getWsOutbound.writeTextMessage(CharBuffer.wrap(msg));
 } 
于 2013-01-28T09:01:14.673 に答える