【发布时间】:2015-02-10 01:18:37
【问题描述】:
我正在用 Java 编写游戏服务器。在游戏服务器中很常见,我必须获取一个客户端接收到的数据并将其分发到客户端的房间(其他客户端)。目前,每个客户端都产生自己的线程并在此之上工作。但是,我在定义玩家之间的关系时遇到了麻烦。我如何控制诸如聊天之类的东西,其中必须将消息回显给同一房间中的所有其他玩家?我正在考虑类似于消息队列的东西,所有线程通常都会查找消息并将它们发送到自己的客户端。
我也愿意接受立即放弃多线程的建议,但我对 NIO 并不熟悉,而且服务器已经使用普通的 Sockets 和 Threads 编写。
总结:我如何让我的客户(在线程中)相互交谈?还是有更好的非线程替代方案?
【问题讨论】:
-
使用像 Netty 这样的框架会让你的生活更轻松,你的应用程序更具可扩展性。我确信向连接的客户端广播数据成为一项简单的任务。可能会有一点学习曲线,但这是值得的。
-
@JurgenCamilleri 当我阅读 netty 的入门手册时,我倒吸一口凉气!这么多
builders 和factorys 让我哭了!您是否知道更好的学习资源,或者那是真实且经过测试的方式? -
根据我使用 Netty 的经验,我刚开始编写示例并自己尝试;然后开始在它们之上构建我需要的东西,并丢弃我不需要的东西。这个 YouTube 频道包含一个看起来很有前途的系列:youtube.com/channel/UCIA0yteJXa5JgRqxFJYQbEQ
标签: java multithreading sockets io server