幾乎搞了一個工作日的時間,尋找了很多的資料,學習,調試,最終終於把利用web socket方法,在node.js作為伺服器的情況下,實現了client端與server端的互動,沒辦法,學習的過程就是這樣,經曆過痛苦之後,才能永生~~
雖然web socket這項技術早已經出來了,國外大概在10年就有人去研究,國內的我看最早的大概是在11年也許有更早的,我沒有看到相關資料罷了),而我呢,確是在這幾天因為工作的原因,才知道這麼個東西,才準備去學習一下。要知道我學習java script才幾天的時間,就在我寫這篇文章的時候我還在學習什麼是json,oh, my god! 好吧,我之前是搞C++的)。
其實我不太想讓大家經曆一遍我的痛苦,所以我直接把大家可能遇到最原始的問題發出來。
如果你安裝好了node.js之後,並且按照網上大多數的講web socket技術的資料上寫的那樣,用js 將伺服器端和用戶端都寫好之後這兩個我相信大家都應該比我更容易掌握,畢竟我才剛接觸js),實際上你就可以在命令列中直接運行node xxx.js程式就Ok 了,然後你用你的用戶端去串連這個伺服器位址,如果出現:TypeError: Object #<WriteStream> has no method 'flush', 直譯就是找不到flush 方法。大家發現process.stdou.flush();不難發現這是一條類似於列印語句的東西,所以//掉它,結果發現問題更讓人迷惑,最重要的是從來沒有成功串連過,所以也不知道成功之後是什麼樣子的。
這個問題的原因可能在於大家下的一個web socket第三方庫,也許你下載的地址是:
https://github.com/remy/html5demos/tree/master/server/ 這個網址真是害人啊,從網上看文章說的原因是這個庫不適用於node.js xx版本之後,因為node.js不斷更新,這個庫已經不跟著更了,這個有點坑人啊!所以最新的第三方庫大家可以下載這個網址上的:
https://github.com/Worlize/WebSocket-Node 一試便成,好東西。然後所有的事情就解決了,可以安心看看代碼,然後在其基礎上進行修改了。
大家下載解壓之後,運行WebSocket-Node-master\test目錄下的echo-server.js,然後用自己寫的用戶端直接連http://localhost:8080 就行了,這個8080是echo-server.js檔案裡定義的。然後就能連上了,真是讓人興奮啊!
希望大家研究過web socket的人能一起多多交流,還有很多要和大家學習。
這裡有幾篇學習過程中發現的比較好的文章,分享給大家。
1-http://ued.sina.com.cn/?p=900#comment-7448
2-http://www.html5china.com/HTML5features/WebSocket/20110926_2044.html
本文出自 “典型獅子男” 部落格,請務必保留此出處http://zhouhongyu1989.blog.51cto.com/2931598/1290088