java - 使用基于 Java 的 netty 套接字 io 客户端向所有浏览器发送消息

标签 java socket.io netty

我目前正在尝试从基于 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/

相关文章:

java - Netty:使用 `IdleStateHandler`检测断线

java - 使用 Hibernate,拦截器接收与当前值和先前值相同的集合对象,如何获取真实的当前值和先前值?

java - Jersey JAXB 如何为 List 实现 MessageBodyWriter

java - WebFlux DataBufferLimitException : Part headers exceeded the memory usage limit of 8192 bytes

node.js - 如何在多个服务器上扩展 socket.io 应用程序?

node.js - socket.io v.4 如何在加入时获取房间内已有的套接字列表

java - netty EpollEventLoopGroup vs NioEventLoopGroup,我应该在 CentOS 6 上选择哪个?

java - 如何使用 Java 8 在 Map 和 value 属性上使用多个比较器

java - java中的RCaller和RQuantlib错误

javascript - 非事件客户端连接的 socket.io 服务器端超时?