我目前正在尝试从基于 java 的套接字 io 客户端向所有浏览器发送消息 socket.io-netty .但目前它一次仅向一个浏览器发送消息。 片段如下:
public class IOClientListener implements INSIOHandler {
private INSIOClient ioClient=null;
private final static Logger log=LoggerFactory.getLogger(IOClientListener.class);
@Override
public void OnConnect(INSIOClient client) {
System.out.println("A user connected :: " + client.getSessionID());
client.send("Hey you are connected to myhope.com");
}
@Override
public void OnDisconnect(INSIOClient client) {
System.out.println("A user disconnected :: " + client.getSessionID() + " :: hope it was fun");
}
@Override
public void OnMessage(INSIOClient client, String message) {
System.out.println("A message received:: " + message + " :: hope it was fun");
}
@Override
public void OnShutdown() {
}
public INSIOClient getIOClient(){
return this.ioClient;
}
}
我想知道如何使用这个客户端广播消息。提前致谢
最佳答案
您可以使用 Netty ChannelGroup 来实现此目的
....
static ChannelGroup allClientChannels = new DefaultChannelGroup();
@Override
public void OnConnect(INSIOClient client) {
System.out.println("A user connected :: " + client.getSessionID());
client.send("Hey you are connected to myhope.com");
allClientChannels.add(client.getCTX().getChannel());
}
@Override
public void OnDisconnect(INSIOClient client) {
System.out.println("A user disconnected :: " + client.getSessionID() + " :: hope it was fun");
allClientChannels.remove(client.getCTX().getChannel());
}
...
//when you want to send a broadcase message
allClientChannels.write(yourMessage);
有关更多详细信息,请查看ChannelGroup API Doc
关于java - 使用基于 Java 的 netty 套接字 io 客户端向所有浏览器发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8742511/