`
CshBBrain
  • 浏览: 638216 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
B7d9bf34-126e-301f-819e-81f2615b5a2a
开源WebSocket服务...
浏览量:142149
Group-logo
HTML5移动开发
浏览量:135496
社区版块
存档分类
最新评论

自己写的一个WebSocket服务器

阅读更多
本人已经发布最新版本的基于NIO 的轻量级高性能的websocket服务器项目CshBBrain,博客地址:http://cshbbrain.iteye.com/blog/1685217,项目googlecode地址:http://code.google.com/p/cshbbrain/
项目github地址:https://github.com/CshBBrain/CshBBrain
项目使用交流讨论专栏:http://www.iteye.com/blogs/subjects/CshBBrain


由于遇到一个实时采集股指,并把股指的实时数据在手机,平板电脑(股指数据采用的html展示)上展示给读者;

研究了使用ajax轮询请求数据,发现给服务器构成的压力比较大,

于是决定想想其他的方法,后来发现html5的websocket可以保持与服务器的连接,所以可实现服务器往页面推送股指数据。

因为在之前我使用JAVA 的NIO写了一个专用的http服务器用于公司的产品中,性能表现还不错。所以这次决定再次使用JAVA NIO

写一个websocket的服务器,在写之前也研究了一些websocket服务器的实现,大多数的实现只能算一个demo,无多大实用价值,

也研究了一些netty,但我觉得netty还是有点臃肿,由于时间紧张;只有自己写。打算采用JAVA NIO 非阻塞模式来写,结果发现

这是一个噩梦的开始,可能是我水平还不够,对JAVA NIO非阻塞模式处理长连接的研究还不够深入。使用传统的阻塞式socket编程方式,则每个客户连接需要一个独立的线程来处理,单台服务器所能处理的连接数量将受到较大的限制,都达不到预想的性能效果。

最后决定自己写一个模拟JAVA NIO的轮询,多路复用的东西;也算是为国内想写websocket服务器的童鞋探下路。

废话不多说,请看下面的图。附带源码中,有一个股指采集程序,websocket服务器负责将采集到的最新股指推送给客户端。

整个结构大量用到多线程,线程池技术,有较多场合使用到生产-消费模式,本来想用下JAVA NIO的,结果没能实现,只好自己写了一个线程来模拟。






目前没有做性能压力测试,期待有童鞋帮忙做做这方面的测试,附件有源码(根据readme说明简单修改下就可以使用)
  • 大小: 75.3 KB
分享到:
评论
7 楼 机器人3 2015-03-23  
这是长连接的套路吗
6 楼 CshBBrain 2014-05-06  
hehefan 写道
Jason S.H.Chen,在吗,这行代码报错啊import com.jason.util.MyStringUtil;就是MyStringUtil无法获取到啊,求解


这个 代码我现在 机器上没有了,硬盘坏过,你 可以 到CshBBrain Websocket开源项目中 源码中找到
5 楼 hehefan 2014-05-05  
Jason S.H.Chen,在吗,这行代码报错啊import com.jason.util.MyStringUtil;就是MyStringUtil无法获取到啊,求解
4 楼 guava 2014-01-14  
不错 我也在研究怎么写自己的服务器
3 楼 zfk51069 2013-07-01  
非常感谢共享!
2 楼 tb1989 2012-06-20  
请教!项目中有些文件不存在啊!
1 楼 yirenweibaidu 2012-03-16  
请教下 你这个例子貌似无法建立连接啊。

相关推荐

Global site tag (gtag.js) - Google Analytics