2011/11/28

WebSocket(1)

最近在研究WebSocket的東西

不過上網找了一些sample code都是無法正常運作

後來才了解原來WebSocket有分兩種protocol

1.draft-hixie-thewebsocketprotocol
2.draft-ietf-hybi-thewebsocketprotocol

第一種在2010/08/08已經過時了

現在主要以第二種為主

網路上的範例多是以hixie-75、hixie-76為主

而我目前的瀏覽器是chrome15.0.874.121 m採用hybi-10的protocol

難怪我找到的sample都無法正常跑

最後找到了

https://github.com/Worlize/WebSocket-Node (Node JS)

https://github.com/lemmingzshadow/php-websocket(PHP5.4)

這兩個chrome可以支援的server端

就開始研究囉


由於我的server是windows平台的

所以安裝nodejs的npm會有點麻煩

加上nodejs版更現在到了0.61

一些語法已改變

以WebSocket-Node這個project為例

他的express程式啟動是沒問題

不過卻不會有作用

所以我只好先把ejs部分(client端)先搬到apache上

修改一下註解掉第19行
/***********************************************************************/

// Enable us to simply require('websocket') from within the examples directory
//require.paths.unshift(__dirname + '/../../lib/');

var WebSocketServer = require('websocket').server;
var express = require('express');
var app = express.createServer();

(由於此篇在介紹websocket故nodejs設定不贅述)

>node whiteboard.js

伺服就啟動囉

開啟兩個瀏覽器果然一邊畫圖,另一邊也會跟著畫

速度還挺快的!!

後記:

我在公司與家裡server上的chrome開此範例都很正常

唯獨我的桌電上每次都需要等30秒timeout後圖才會出來

而且也會馬上與websocket server斷線

我就一直很納悶....上了plurk問了一下

神人學長說 可能是防毒軟體作祟

我查了一下

把chrome的主動模式關掉之後

果然一切都會復正常了

沒有留言:

張貼留言