我目前正在使用Jetty作为我的websocket服务器,我正在尝试制作一个实时游戏。我真的这个新手。到目前为止,我已经成功地完成了最简单的工作(即聊天)。现在,我有几个问题:
我正在尝试列出服务器中连接的当前用户的列表;我该如何制作这样的功能?我真的不知道这是否实用,但我的想法是,有一个时间间隔让服务器知道“嘿,我还活着。”我希望我的用户列表是动态的,如果用户注销,列表将刷新。
我也在尝试为我的应用制作“房间”。基本上,“1号房间”的人看不到“2号房间”的人在做什么;其他房间的功能已经不言自明了。我仍然不知道这个;有人可以推荐一种方法来实现这个吗?
到目前为止,我一直很乐意学习这项技术,如果有帮助,我会很高兴。到目前为止,这两个是我的问题。我也对我的应用程序提出任何建议。
提前谢谢大家。 : - )
(嗯,#1和#2只能通过Javascript解决吗?)
答案 0 :(得分:2)
你的问题不是真正的码头或特定于websocket。
Websockets只是为您的Web浏览器提供了一种与服务器通信的传输机制 - 在该传输上设置的内容,以及服务器管理信息的方式与websocket完全分开。
首先,如果您尚未阅读,请阅读以下文章:http://cometdaily.com/2010/03/02/is-websocket-chat-simple/
其次,考虑使用cometd使这更容易 - 版本2(目前处于测试阶段)支持websockets。
至于你的问题 - 你需要做两件事(cometd可以帮助解决这个问题)
<强> 1。定义协议
定义一个位于websockets之上的消息传递协议。 Websockets只提供了一种发送数据块的方法,它们没有定义数据的含义。你需要构建一些可以做到这一点的东西,所以你有从客户端到服务器的消息,如。
然后你需要从服务器到客户端的消息
您需要提供一些可靠的方法来通过websocket发送数据。您可以创建自己的简单协议(如Jetty聊天示例),您可以使用JSON,XML或CometD通道。
<强> 2。服务器端状态
如果你有简单的聊天工作,那么你必须在此开始,但你需要的另一个方法是跟踪
根据系统的复杂程度,您可以将其存储在服务器上的一个大单例中。