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即可。


nieyong 2012-04-07 22:08 发表评论

你可能感兴趣的:(Socket.IO,netty,socketio)