用过RaceChat吗?华军软件园有,可以反编译来瞧瞧。
解决方案 »
- 关于利用httpurlconnnection提交表单
- NIO选择器
- Hibernate执行createQuery().list()报空指针异常
- 高手请进!!
- 类型转换问题!简单啊。
- 请问java虚拟主机如何升级?
- 想学JAVA,但是不知道J2EE、J2SE、J2ME是什么意思?他们有什么区别?学哪个好一些呢?
- 在JAVA中用zipOutputStream类把文件打包成zip文件不支持中文如何解决?急!!!
- 求教color的alpha是怎的回事?
- 很简单程序的编译出错,问题在哪里?请指教
- 一般什么样的公司招java程序员呢,我上了一下一些求职网,发现小公司招java程序员的很少?
- 谁知道iPlanet6与JBuilder7整合吗?高分伺候
这样对会使聊天室不好用。还是推信息到客户端,最少客户端感到舒服,而且是实时的。每秒钟10000条信息,服务器就不看重负了吗?我也想知道,结果会怎么样?不过,163,china都是用的推技术做的。
大家都说让客户端自己去取,我觉得未必。
这种思路主要是沿袭了以往做web chat的经验,毕竟http协议是无状态协议,服务器无法主动“推”送数据给客户端,所以造成只能让客户端采用种种方式比如定时刷新或者xmlhttpget和remotescript等方式来“刷新”数据。
这样难道服务器负载就小么?
比如说1000个人同时在线,一秒钟刷新一次:如果一秒钟之内没有人发言呢?WebServer要接受1000个request...如果没有采用http 1.1的keep alive,那样对WebServer来说就是1000个Socket请求...网易早先用IRC来做聊天室,后来据说使用java改了服务器端。想必是用hashset一类的collection来保存数据的。不过你可以采用一些cache机制,例如把半秒钟内更新的数据放在buffer中,定时向collection中的人发一次数据,而不是每次有更新都发。我所知道的和推荐的,做这样的应用还用c比较好--如果你的需求中对效率问题比较敏感 x]btw, 所谓的“推”技术,早先是一班不懂socket编程,从web开始进入编程领域的“程序员”提出的概念,所以造成后来的很多误解。
游戏中会有许多需要群发的信息,例如某个用户退出大厅、改变积分等等,而且这类控制信息会比较频繁,所以我才考虑效率问题的。
我这几天也了解了这方面的一些资料,感觉piggybank说的方法应该是比较适合我们使用的吧:)
就是建立一个cache,信息并不是立即推向用户,而是积攒到固定时间或者固定条数时再推向用户。把要积攒到的信息条数设置成可配置的,这样就可以根据游戏实时性要求来调整这个数字了。