聂永的博客

记录工作/学习的点点滴滴。

socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~

缘起

socket.io是一个跨浏览器的全平台反响AJAX实现,官网(http://socket.io)定义为:the cross-browser WebSocket for realtime apps.
个人认为这是一个跨浏览器的集大成者,支持桌面端和移动端浏览器(http://socket.io/#browser-support):

Desktop

  • Internet Explorer 5.5+
  • Safari 3+
  • Google Chrome 4+
  • Firefox 3+
  • Opera 10.61+

Mobile

  • iPhone Safari
  • iPad Safari
  • Android WebKit
  • WebOs WebKit
为了支持众多浏览器,必然内置对若干协议的支持:
  • WebSocket
  • Adobe® Flash® Socket
  • AJAX long polling
  • AJAX multipart streaming
  • Forever Iframe
  • JSONP Polling
socket.io跨浏览器,根据浏览器自动适配最适合方案进行实时推送。
官方提供了各种语言的实现,见 https://github.com/learnboost/socket.io/wiki/,有java语言实现服务器端,但不支持最新的0.9版本,于是萌发了重写一个的想法。

概述

这是一个Socket.IO服务器端实现,基于netty框架,适配socket.io 0.9-1.0版本(虽然socket.io 目前还处于 0.9版本,会支持到1.0)
项目地址: http://code.google.com/p/socketio-netty/
采用流行的Apache License 2.0协议,svn作为源代码管理。
邮件讨论组为 http://groups.google.com/group/socketio-netty
或者
 https://groups.google.com/group/socketio-netty
期待您的加入。
至于为什么没有采用tomcat/jetty支持的servlet3规范、sebsocket实现,个人认为,构建在其基础上较为容易,tomcat7最新版刚刚支持websocket,传说支持websocket的servlet 3.1还未出世,等等看吧。 而Netty这个异步IO框架,我们可以在它的基础上一站式搞定如此多的传输通道/协议。
socketio-netty支持:
  • WebSocket
  • Flash Socket
  • AJAX long polling
  • Forever Iframe
  • JSONP Polling
等传输通道协议。

示范

本示范,参考 socket.io node.js 版本的聊天实现(chat),客户端完全一致,服务器端完全换成了socketio-netty实现。其它的没有任何变化。嗯,可能看一个示范,可以让人更放心的使用。 客户端入口 chat.html (存放在tomcat/jetty/nginx/apache/iis相应位置,可以直接访问即可): 看一下,我们的服务器端如何实现,来一个启动入口: 然后需要一个DemoChatHandler处理器,这个是一个单列多线程模式:
以上就是整个的聊天室实现,虽然不算优雅,但很简单。
所有你所需要做的就是,检出代码,运行com.yongboy.socketio.test.ChatServer即可。

posted on 2012-04-07 22:08 nieyong 阅读(16022) 评论(7)  编辑  收藏 所属分类: socket.io

评论

# re: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~ 2012-06-12 12:06 sunyfun

你好!,楼主,我想问一下这个socketio-netty 能在android上工作吗?我的想法是任何一个android主机都有可能成为服务端。期待你的回复sunyfun320@gmail.coom  回复  更多评论   

# re: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~ 2012-08-20 15:36 黄普

非常好,值得研究  回复  更多评论   

# re: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~ 2012-08-31 16:08 黄普

请问一下,我怎么开一个线程来读取数据库,然后把数据通过handler发送出去  回复  更多评论   

# re: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~ 2012-11-28 20:14 陀陀

您好 :

我使用了您写的socketio-netty,如果 在 socketio.properties中 改变 flash_policy_port,不是 默认的10843,比如改为10846,因为要在 IE中使用 ,发现 改了端口后 无法 连接 到 服务器 ,telnet新端口 是可以 的,IE 报如下 错误 :
[WebSocket] cannot connect to Web Socket server at ws://127.0.0.1:9000/socket.io/1/flashsocket/10718c44-aef5-4cd0-b452-620b7875fe3c (SecurityError)
make sure the server is running and Flash socket policy file is correctly placed

src下 我新建了一个 static的包,里面放那2个swf文件。jsp中连接 语句如下 :var socket = io.connect('http://127.0.0.1:9000');

上述 问题 ,如果我不改 socketio.properties中的10843的话,在 IE下是没有问题的。

非常抱歉,我反编译了你的jar,虽然有默认配10843,但基本还是从配置文件中读出flash_policy_port,应该没问题啊,我不知道这是什么问题。。。。,而且,我看到 socket.io.js里面也写了10843,可我把这里改成10846还是无法连通。


难道IE下只能10843?真心求教,期待你的回复

我的邮箱 81150540@qq.com
  回复  更多评论   

# re: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~[未登录] 2013-01-05 12:50 陈磊

在googlecode上面看见你的socketIO项目,基于netty,我在自己的项目上也有个基于netty的项目,目前连接在30000,轮询发送,最高测试200多并发(因为硬件环境的限制),体现良好,对于netty有深入的研究,所以想加入你的那个开源项目,我的联系方式是:13638363871@163.com(QQ,邮箱)。我的主页是:http://my.oschina.net/chenleijava  回复  更多评论   

# re: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~ 2014-04-23 18:06 keeny

@陀陀
socket.io.js 里面有默认端口10843,写死的,你把它改了,就可以了  回复  更多评论   

# re: socketio-netty : 又一款socket.io服务器端实现,兼容0.9-1.0版本~ 2014-07-10 12:55 lzh

你的代码我都没有更改,我用IE8为什么会出现 您的主机中的软件中止了一个已建立的连接????我的邮箱是472353391@qq.com  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

公告

所有文章皆为原创,若转载请标明出处,谢谢~

新浪微博,欢迎关注:

导航

<2012年4月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

统计

常用链接

留言簿(58)

随笔分类(130)

随笔档案(151)

个人收藏

最新随笔

搜索

最新评论

阅读排行榜

评论排行榜