聶永的博客

          記錄工作/學習的點點滴滴。

          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 閱讀(16182) 評論(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)

          個人收藏

          最新隨筆

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 化德县| 临泽县| 凤翔县| 新营市| 渑池县| 平和县| 合作市| 当雄县| 汪清县| 循化| 滨海县| 嘉义县| 襄垣县| 台山市| 兴安盟| 乐清市| 清丰县| 昭平县| 鄂尔多斯市| 东平县| 沅江市| 璧山县| 灵宝市| 唐海县| 那曲县| 金寨县| 阜平县| 汤阴县| 双柏县| 杭州市| 革吉县| 上饶市| 维西| 惠安县| 东莞市| 克拉玛依市| 高陵县| 游戏| 盐山县| 南陵县| 金湖县|