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

自己写的一个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  
请教下 你这个例子貌似无法建立连接啊。

相关推荐

    C++ 实现WebSocket 服务器

    在本项目中,我们使用C++来实现一个WebSocket服务器,借助了libuv库来处理TCP层面的基础工作,并利用gbase作为辅助工具。 ### C++ 语言特性 C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅支持过程化...

    c++ websocket服务器和html客户端

    1. **WebSocket服务器**:使用C++编写,实现了WebSocket服务器端。C++是一种通用的、面向对象的编程语言,其强大的性能和底层控制能力使其成为构建网络服务的理想选择。WebSocket服务器的主要任务是接收来自客户端的...

    MFC websocket server | MFC websocket服务器

    在这个场景中,"MFC WebSocket服务器"是指使用MFC框架实现的WebSocket服务器。 MFC WebSocket服务器的实现涉及到以下几个关键知识点: 1. **MFC框架**:MFC是基于Windows API的,它提供了一种面向对象的方式来编写...

    基于C++ SOCKET编程的WebSocket服务器(linux)

    在本项目中,我们将探讨如何在Linux环境下,利用C++的SOCKET编程技术来实现一个WebSocket服务器,而不依赖任何开源库。 首先,我们需要理解C++中的SOCKET编程基础。在C++中,SOCKET是网络编程的基本接口,它提供了...

    MFC websocket服务器和客户端

    总的来说,MFC WebSocket服务器和客户端的实现涉及网络编程、协议解析、多线程等技术,是一个综合性的项目。通过这个项目,开发者不仅可以学习到MFC的应用,还能深入理解WebSocket协议的工作原理和实现方式。

    WebsocketServer测试服务器

    通过以上步骤,你可以构建一个简单的WebSocket服务器,并可以根据需要扩展功能,例如实现安全连接(WSS)、添加认证机制、优化性能等。对于学习和理解WebSocket通信以及网络编程原理,这样的测试服务器是一个很好的...

    ESP32 的WebSocket 服务器

    通过以上步骤,你可以构建一个基本的ESP32 WebSocket服务器,实现远程控制硬件的功能。在实际应用中,可能还需要考虑安全性、性能优化以及更多复杂的业务逻辑。例如,添加身份验证机制,防止非法访问;或者增加心跳...

    WebSocket服务器的.NET实现 SuperWebSocket

    用户可通过SuperWebSocket来快速的构建可靠的,高性能的websocket服务器端应用程序。 和SuperSocket一样,SuperWebSocket可以控制台和windows服务的形式运行,同时它还支持直接运行在Website之内,这样更简化了...

    webSocket 服务器端的简单实现

    在这个"WebSocket服务器端的简单实现"中,我们可能会学习到以下关键知识点: 1. **WebSocket协议基础**:WebSocket协议建立在TCP协议之上,通过握手过程建立起持久的连接。握手过程中,客户端发送一个HTTP Upgrade...

    C# WebSocketServer服务器源代码.zip

    总之,“C# WebSocketServer服务器源代码.zip”提供了一个C#实现的WebSocket服务器示例,可以帮助开发者理解WebSocket通信的原理,以及在C#中如何构建和管理WebSocket服务器。通过学习和分析这些代码,可以提升你的...

    易语言websocket服务器

    易语言websocket服务器源码,websocket服务器,握手包处理,生成握手参数列,创建返回握手包,返回数据包处理,接收数据包解码,高级截取文本,取sha1,切片,ord,字节集到十六进制,十六进制到字节集,取十进制,取数值,utf8到...

    c c++实现websocket服务器 c c++实现websocket客户端

    这个代码例子使用了c c++实现了websocket 开发 包含了websocket服务器和websocket客户端,拥有详细的解释 这个库比libwebsocket更加简单方便,比libsocket更加高效便捷.

    WebSocket服务器端+Html5客户端

    开发者可以通过`new WebSocket(url)`创建一个WebSocket实例,然后调用`connect()`方法连接到服务器。一旦连接建立,就可以使用`send()`方法发送数据,并监听`message`事件来接收服务器推送的数据。 压缩包内的文件...

    c# winform快速建websocket服务器源码 wpf快速搭建websocket服务

    c# winform快速建websocket服务器源码 wpf快速搭建websocket服务 c#简单建立websocket服务 websocket快速搭建 随着互联网技术的飞速发展,实时交互和数据推送已成为众多应用的核心需求。传统的HTTP协议,基于请求-...

    websocket服务器.rar

    1. 连接管理:WebSocket服务器需要处理客户端的连接请求,建立并维护一个持久的连接。这涉及到握手过程,即客户端通过发送一个Upgrade头来请求升级到WebSocket协议,服务器确认后完成握手。 2. 数据帧解析:...

    websocket服务器

    一个简单的WebSocket服务器端点可能如下所示: ```java import javax.websocket.OnClose; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax....

    C#实现WebSocket源码(c#写的服务端html写的客户端)

    它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 其他特点包括: (1)建立在 TCP 协议之上,服务器端的实现比较容易。 ...

    nodejs-websocket 基于node创建websocket服务器

    nodejs-websocket 基于node创建websocket服务器 websocket 协议和 http 协议类似,http 协议有一个缺陷,只能由客户方端发起请求,服务端根据请求 url 和传过去的参数返回对应结果 websocket 是双向通信的,只要 ...

    go语言写的websocket代理服务器

    `gorilla/websocket`是一个广泛使用的Go库,提供了方便的API来创建WebSocket服务器和客户端。 首先,我们需要导入必要的包: ```go import ( "net/http" "github.com/gorilla/websocket" ) ``` 接着,定义一个...

Global site tag (gtag.js) - Google Analytics