我正在开发一个通用的回合制游戏,目前它是这样操作的:使用 boneCP(连接池)、MySQL 数据库、java 服务器、android 客户端,以及很快的线程池。
客户端向服务器发出请求。Java 服务器生成一个新线程来处理请求。服务器发送响应。TCP 套接字终止。
每个客户端不是维护大量持久(持久)连接,而是每隔 (x) 间隔简单地戳一下服务器,并询问是否轮到他们了。如果不是,它什么也不做。如果是,它可以输入并将其发送到服务器。
使用这种类型的服务器驱动网络,我是否会发现将所有东西都转换为 NIO 会有一些好处?客户端通常只通过 TCP 套接字发送非常小的数据,几行文本。服务器很少偶尔会向客户端发送较大的文件(图像、声音、视频)。关于在此应用程序中使用 IO/NIO 的任何其他想法?我想知道这是否可以通过消除创建的最大线程数的瓶颈来扩展我的可伸缩性,即使它们只持续一秒钟左右。
编辑:另请注意:如果玩家 A 等待超过 30-60 秒才能轮到他们,那么他们的回合将被放弃。所以这并不是说我可能永远在无限循环中戳服务器。充其量是5秒的间隔几次。在游戏没收之前有多少回合没收是有上限的。