`
haoningabc
  • 浏览: 1469894 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

websocket相关调研 总结帖

阅读更多
最近把websocket的客户端和服务端使用过的调通的例子总结如下

摒弃XMPP,xml类的在网络传输无论是流量还是性能已经是公认的瓶颈了。
采用websocket协议,
1.是数据格式可自定义,json,流,二进制等,极大的节约了网络流量,更具灵活性
2.方向多源,性能能达到极致而且可控。
3.跨平台,在web端,ios端,android端或者pc上通用,任意整合
但是目前websocket的实现方式也有很多

java的有tomcat7支持的;netty的;java-websockt库的;还有个国内的项目宝贝鱼,使用java的多线程实现的
以上例子已经调通,可参见我的博客
tomcat7的 http://haoningabc.iteye.com/blog/2124605
java-websocket.jar的http://haoningabc.iteye.com/blog/2011985
宝贝鱼的这个是引用别人的
http://cshbbrain.iteye.com/blog/1685217
但这些虽然有的是java的非阻塞io,但是性能局限于jvm,系统io和内存无法发挥极致。
java的优势就是就是业务代码灵活修改,但是作为im实时应用,还是欠缺很多原生的优势

其次是
python的websocket实现方案,python性能不必说了,python+fastcgi+nginx已经在互联网验证n久了
最流行的有两种websocket可用框架autobahn和tornado
autobahn用的python的twisted框架,异步编程很好的控制了性能;
Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:
它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对 epoll 的运用,
Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web 服务来说,Tornado 是一个理想的 Web 框架
这两个例子也调通了,见我的博客
autobahn
http://haoningabc.iteye.com/blog/2153763

Tornado:
http://haoningabc.iteye.com/blog/2164973


性能最好的是c写的libwebsocket,也被很多开源项目作为组建使用,但是开发最复杂,不适用于开发。

最优方案nginx+lua+websocket
存储使用nginx+lua+redis(或者mongo),lua只作为nginx和redis,mongo的媒介
im异步刷到缓存后,再异步刷到关系型数据库进行存储,可选mysql的等只做业务管理的操作

nginx原生基于epoll和kqueue,而且特殊需求可以模块定制,理论上数据可以达到c10k,在服务器上用jetter压测,8核16G内存的服务器普通服务器,并发轻松过4k,如果多客户机同时压测得到效果一定更好
实现的例子,
http://haoningabc.iteye.com/blog/2165119
http://haoningabc.iteye.com/blog/2168717
特殊情况nginx定制,nginx模块开发的例子
http://haoningabc.iteye.com/blog/2024776


综上,以业务逻辑和im实时性能综合考虑
im实时通信的部分,最核心部分使用nginx+lua直接操作websocket,数据存mongo和redis缓存,定时同步到mysql
复杂也业务逻辑又偶尔实时通信的部分使用python,便于灵活的修改
管理平台的业务代码可以使用java或者php的形式(尽量不使用),

具体开发可根据需要的时间成本而定

ios客户端,也测试了几中方法,最可行就是SocketRocket
调通的例子
http://haoningabc.iteye.com/blog/2125460

如果使用无服务器形式,ios点对点可以使用苹果的mutipeer,结合蓝牙的方式
调通的例子
http://haoningabc.iteye.com/blog/2155794

以上所有完整代码都在http://github.com/killinux可以找到
任何需求可以我来做也可以随时找我讨论技术

还有一些ios的仿微信界面的,ui相关的,这里略

go的http://www.cnblogs.com/yjf512/archive/2013/02/18/2915171.html

如果是websocket传文件,比如图片等二进制

使用
http://haoningabc.iteye.com/blog/2266661
分享到:
评论

相关推荐

    WebSocket传视频方法总结

    WebSocket传视频方法总结

    WebSocket传输视频方法总结.txt

    ### WebSocket传输视频方法总结 #### 一、获取视频数据 在通过WebSocket进行视频传输之前,首先需要解决如何获取视频数据的问题。不同的技术栈提供了多种获取视频流的方式。 ##### 1. Chrome: GetUserMedia() 在...

    websocket-sharp 范例

    总结来说,WebSocketSharp是C#开发者在不支持WebSocket的.NET Framework版本下进行WebSocket编程的一个强大工具。通过学习和实践这个"WebSocketSharp 范例",你可以掌握如何创建WebSocket服务器和客户端,以及如何在...

    技术文档WebSocket相关

    下面将详细探讨WebSocket的相关知识点。 **1. WebSocket简介** WebSocket是在HTTP基础上设计的,旨在提供低延迟、高效率的双向通信。传统HTTP协议是基于请求-响应模式的,而WebSocket则创建了一个持久连接,允许...

    WebSocket相关方法类

    在Android开发中,WebSocket接口提供了多种方法来管理这个连接,这些方法是WebSocket相关知识的重点。首先,我们需要创建一个WebSocket连接。这通常涉及到以下几个步骤: 1. **创建WebSocket客户端**: 使用如`...

    websocket总结

    WebSocket 总结 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。通过 TCP 来传输数据在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输...

    C语言实现的websocket

    本文将详细讨论使用C语言实现WebSocket的相关知识点。 1. WebSocket基础 WebSocket协议基于TCP,它通过HTTP/1.1的Upgrade头来建立连接。一旦连接建立,就可以在同一个TCP连接上进行多次交互,避免了HTTP的无状态和...

    websocket测试相关jar.zip

    总的来说,"websocket测试相关jar.zip"为JMeter用户提供了在性能测试中涵盖WebSocket协议的必要工具,通过这些工具,开发者和测试工程师可以有效地测试WebSocket应用,确保其在高负载下的稳定性和效率。

    websocket断线重连 websocket JS框架

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Web应用中,WebSocket为开发者提供了实时交互的能力,常用于在线聊天...

    webSocket_java_websocket同步_websocket_

    WebSocket是一种在客户端和服务器之间建立持久性连接的协议,它为双向通信提供了低延迟、高效的数据传输机制。在Web开发中,WebSocket常用于实现实时应用,如聊天室、股票交易、在线游戏等,解决了传统的HTTP协议...

    C# WinForm客户端连接 WebSocket

    总结,通过结合C# WinForm的强大UI功能和WebSocket的实时通信能力,我们可以创建出高效的桌面应用。在VS2019中,利用WebSocket4Net库,我们可以轻松地实现客户端与WebSocket服务器之间的数据交换,从而满足各种实时...

    MFC实现WebSocket通信

    总结起来,MFC实现WebSocket通信涉及C++编程、MFC框架的理解、WebSocket协议的掌握以及第三方库的集成。虽然VS2008相对较旧,但通过合理的代码设计和库的使用,依然可以构建出功能完备的WebSocket客户端应用。在实际...

    C#实现WebSocket协议客户端和服务器websocket sharp组件实例解析

    总结来说,WebSocket Sharp 提供了一个强大且灵活的工具,用于在C#环境中实现WebSocket协议,无论是构建实时交互的Web应用,还是在Unity游戏开发中实现网络通信,都是一个值得考虑的选择。通过理解和掌握其基本用法...

    C# IIS webSocket 实例

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行双向通信,极大地提高了实时性。在IT行业中,尤其是在开发实时应用如在线聊天、股票交易、多人在线游戏等场景时,WebSocket已经成为首选的...

    html页面测试websocket

    WebSocket是Web应用中一种在客户端和服务器之间建立长连接的协议,它允许双方进行全双工通信,极大地提高了数据传输效率。在这个“html页面测试websocket”的项目中,我们可以看到几个关键文件:`index.html`、`...

    C++ 实现WebSocket 服务器

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在本项目中,我们使用C++来实现一个WebSocket服务器,借助了libuv库来...

    spring+websocketdemo

    WebSocket是Web交互技术的一种革新,它为实时双向通信提供了标准协议。在传统的HTTP协议中,客户端与服务器之间的通信是请求-响应模式,而WebSocket则允许持久连接,使得数据可以双向实时传输,极大地优化了实时应用...

    WebSocket消息实时提醒

    以上就是关于WebSocket消息实时提醒的相关知识点,涵盖了WebSocket的基本原理、API使用、安全性和应用开发中的注意事项。尽管提供的项目不完整,但了解这些概念和实践方法对于构建实时应用是非常重要的。

    websocket_websocket客户端_websocket_

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Web应用中,WebSocket为需要实时交互的服务提供了强大的支持,比如...

    若依WebSocket集成

    2. **配置WebSocket**:在Spring Boot的配置类中,你需要配置WebSocket的相关设置,例如WebSocket端点(endpoint)路径、手柄类(handler)等。示例配置如下: ```java @Configuration @...

Global site tag (gtag.js) - Google Analytics