聶永的博客

          記錄工作/學(xué)習(xí)的點(diǎn)點(diǎn)滴滴。

          socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~

          緣起

          socket.io是一個跨瀏覽器的全平臺反響AJAX實(shí)現(xiàn),官網(wǎng)(http://socket.io)定義為:the cross-browser WebSocket for realtime apps.
          個人認(rèn)為這是一個跨瀏覽器的集大成者,支持桌面端和移動端瀏覽器(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
          為了支持眾多瀏覽器,必然內(nèi)置對若干協(xié)議的支持:
          • WebSocket
          • Adobe® Flash® Socket
          • AJAX long polling
          • AJAX multipart streaming
          • Forever Iframe
          • JSONP Polling
          socket.io跨瀏覽器,根據(jù)瀏覽器自動適配最適合方案進(jìn)行實(shí)時推送。
          官方提供了各種語言的實(shí)現(xiàn),見 https://github.com/learnboost/socket.io/wiki/,有java語言實(shí)現(xiàn)服務(wù)器端,但不支持最新的0.9版本,于是萌發(fā)了重寫一個的想法。

          概述

          這是一個Socket.IO服務(wù)器端實(shí)現(xiàn),基于netty框架,適配socket.io 0.9-1.0版本(雖然socket.io 目前還處于 0.9版本,會支持到1.0)
          項(xiàng)目地址: http://code.google.com/p/socketio-netty/
          采用流行的Apache License 2.0協(xié)議,svn作為源代碼管理。
          郵件討論組為 http://groups.google.com/group/socketio-netty
          或者
           https://groups.google.com/group/socketio-netty
          期待您的加入。
          至于為什么沒有采用tomcat/jetty支持的servlet3規(guī)范、sebsocket實(shí)現(xiàn),個人認(rèn)為,構(gòu)建在其基礎(chǔ)上較為容易,tomcat7最新版剛剛支持websocket,傳說支持websocket的servlet 3.1還未出世,等等看吧。 而Netty這個異步IO框架,我們可以在它的基礎(chǔ)上一站式搞定如此多的傳輸通道/協(xié)議。
          socketio-netty支持:
          • WebSocket
          • Flash Socket
          • AJAX long polling
          • Forever Iframe
          • JSONP Polling
          等傳輸通道協(xié)議。

          示范

          本示范,參考 socket.io node.js 版本的聊天實(shí)現(xiàn)(chat),客戶端完全一致,服務(wù)器端完全換成了socketio-netty實(shí)現(xiàn)。其它的沒有任何變化。嗯,可能看一個示范,可以讓人更放心的使用。 客戶端入口 chat.html (存放在tomcat/jetty/nginx/apache/iis相應(yīng)位置,可以直接訪問即可): 看一下,我們的服務(wù)器端如何實(shí)現(xiàn),來一個啟動入口: 然后需要一個DemoChatHandler處理器,這個是一個單列多線程模式:
          以上就是整個的聊天室實(shí)現(xiàn),雖然不算優(yōu)雅,但很簡單。
          所有你所需要做的就是,檢出代碼,運(yùn)行com.yongboy.socketio.test.ChatServer即可。

          posted on 2012-04-07 22:08 nieyong 閱讀(16169) 評論(7)  編輯  收藏 所屬分類: socket.io

          評論

          # re: socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~ 2012-06-12 12:06 sunyfun

          你好!,樓主,我想問一下這個socketio-netty 能在android上工作嗎?我的想法是任何一個android主機(jī)都有可能成為服務(wù)端。期待你的回復(fù)sunyfun320@gmail.coom  回復(fù)  更多評論   

          # re: socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~ 2012-08-20 15:36 黃普

          非常好,值得研究  回復(fù)  更多評論   

          # re: socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~ 2012-08-31 16:08 黃普

          請問一下,我怎么開一個線程來讀取數(shù)據(jù)庫,然后把數(shù)據(jù)通過handler發(fā)送出去  回復(fù)  更多評論   

          # re: socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~ 2012-11-28 20:14 陀陀

          您好 :

          我使用了您寫的socketio-netty,如果 在 socketio.properties中 改變 flash_policy_port,不是 默認(rèn)的10843,比如改為10846,因?yàn)橐?IE中使用 ,發(fā)現(xiàn) 改了端口后 無法 連接 到 服務(wù)器 ,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,雖然有默認(rèn)配10843,但基本還是從配置文件中讀出flash_policy_port,應(yīng)該沒問題啊,我不知道這是什么問題。。。。,而且,我看到 socket.io.js里面也寫了10843,可我把這里改成10846還是無法連通。


          難道IE下只能10843?真心求教,期待你的回復(fù)

          我的郵箱 81150540@qq.com
            回復(fù)  更多評論   

          # re: socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~[未登錄] 2013-01-05 12:50 陳磊

          在googlecode上面看見你的socketIO項(xiàng)目,基于netty,我在自己的項(xiàng)目上也有個基于netty的項(xiàng)目,目前連接在30000,輪詢發(fā)送,最高測試200多并發(fā)(因?yàn)橛布h(huán)境的限制),體現(xiàn)良好,對于netty有深入的研究,所以想加入你的那個開源項(xiàng)目,我的聯(lián)系方式是:13638363871@163.com(QQ,郵箱)。我的主頁是:http://my.oschina.net/chenleijava  回復(fù)  更多評論   

          # re: socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~ 2014-04-23 18:06 keeny

          @陀陀
          socket.io.js 里面有默認(rèn)端口10843,寫死的,你把它改了,就可以了  回復(fù)  更多評論   

          # re: socketio-netty : 又一款socket.io服務(wù)器端實(shí)現(xiàn),兼容0.9-1.0版本~ 2014-07-10 12:55 lzh

          你的代碼我都沒有更改,我用IE8為什么會出現(xiàn) 您的主機(jī)中的軟件中止了一個已建立的連接????我的郵箱是472353391@qq.com  回復(fù)  更多評論   

          公告

          所有文章皆為原創(chuàng),若轉(zhuǎn)載請標(biāo)明出處,謝謝~

          新浪微博,歡迎關(guān)注:

          導(dǎo)航

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

          統(tǒng)計

          常用鏈接

          留言簿(58)

          隨筆分類(130)

          隨筆檔案(151)

          個人收藏

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 大安市| 无为县| 即墨市| 河曲县| 木兰县| 玉溪市| 密山市| 莫力| 固镇县| 宣威市| 嫩江县| 南阳市| 修文县| 永登县| 沽源县| 高碑店市| 滁州市| 济宁市| 高青县| 平湖市| 临邑县| 七台河市| 康保县| 水城县| 龙泉市| 佳木斯市| 兰州市| 株洲市| 泗阳县| 靖州| 栖霞市| 孟连| 定远县| 那曲县| 松江区| 垦利县| 中山市| 石嘴山市| 专栏| 太湖县| 临海市|