我正在尝试向套接字io socket.io-netty的基于java的客户端的所有浏览器发送消息。但是目前它一次只向一个浏览器发送消息。 片段如下:
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;
}
}
我想知道如何使用此客户端广播消息。在此先感谢
答案 0 :(得分:2)
您可以将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