我通过 WebSockets 写了一个聊天。服务器端用 Java (Tomcat) 编写,客户端用 JavaScript 编写。
一切正常。但是当我尝试从本地网络中的两台机器(它们在路由器下;有一个外部 ip)连接到服务器时,只有一个客户端从服务器接收数据。
连接( socket.onopen() )适用于两者。socket.send(data) 也适用于两个客户端;
但是接收消息( socket.onmessage() )仅适用于第一个连接的客户端。
我该如何解决这个问题?
我通过 WebSockets 写了一个聊天。服务器端用 Java (Tomcat) 编写,客户端用 JavaScript 编写。
一切正常。但是当我尝试从本地网络中的两台机器(它们在路由器下;有一个外部 ip)连接到服务器时,只有一个客户端从服务器接收数据。
连接( socket.onopen() )适用于两者。socket.send(data) 也适用于两个客户端;
但是接收消息( socket.onmessage() )仅适用于第一个连接的客户端。
我该如何解决这个问题?
问题出在服务器部分。
我想将传入消息广播到 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));
}