gpt4 book ai didi

java - 使用 Netty 的聊天服务器

转载 作者:行者123 更新时间:2023-11-30 04:35:06 27 4
gpt4 key购买 nike

我用netty写了一个简单的聊天服务器,我和一个 friend 一直用telnet测试它。当我们两个都连接时,它表示组的大小为 1。每当写入用户列表时,它只会写入发送消息的人。我怎样才能解决这个问题?

import org.jboss.netty.channel.SimpleChannelHandler;
import org.jboss.netty.channel.Channel;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.group.ChannelGroup;
import org.jboss.netty.channel.group.DefaultChannelGroup;

public class ServerChannelHandler extends SimpleChannelHandler {

private ChannelGroup users = new DefaultChannelGroup();

@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
users.write(e.getMessage());
}

@Override
public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
users.add(e.getChannel());
System.out.println("Opened. ");
System.out.println(users.size());
}

@Override
public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
users.remove(e.getChannel());
}


}

最佳答案

您必须为所有创建的 ChannelPipeline 实例共享相同的处理程序实例。或者将 ChannelGroup 声明为 static Final

关于java - 使用 Netty 的聊天服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696822/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com