使用node.js和socket.io實現多人聊天室

來源:互聯網
上載者:User

標籤:

剛學node.js,想著做點東西練練手。網上的東西多而雜,走了不少彎路,花了一天時間在調代碼上。參考網上的一篇文章,重寫了部分代碼,原來的是基於基於node-websocket-server架構的,我沒用架構,單單是socket.io。

一、準系統

1、使用者隨意輸入一個暱稱即可登入
2、登入成功後
1) 對正在登入使用者來說,羅列所有線上使用者列表,羅列最近的曆史聊天記錄
2) 對已登入的使用者來說,通知有新使用者進入房間,更新線上使用者列表
3、退出登入
1)支援直接退出
2) 當有使用者退出,其他所有線上使用者會收到資訊,通知又使用者退出房間,同時更新線上使用者列表
4、聊天
1) 聊天就是廣播,把資訊廣播給所有串連線上的使用者
5、一些出錯處理
1) 暫時簡單處理了系統邏輯錯誤、網路出錯等特殊情況的出錯提示

問題:功能不完善,有bug(退出後,新使用者重新登入,還是原來的使用者) 。抽空完善吧

二、技術介紹

socket.io(官網:http://socket.io/)是一個跨平台,多種串連方式自動切換,做即時通訊方面的開發很方便,而且能和expressjs提供的傳統請求方式很好的結合,即可以在同一個網域名稱,同一個連接埠提供兩種串連方式:request/response, websocket(flashsocket,ajax…)。

這篇文章對socket.io的使用做了詳細介紹:http://www.cnblogs.com/dxy1982/archive/2012/01/30/2328020.html

《用node.js和Websocket做個多人聊天室吧》http://www.html5china.com/HTML5features/WebSocket/20111206_3096.html

三、注意事項

(1)用戶端這樣引用socket.io.js:

<script src="/socket.io/socket.io.js"></script>

可能會載入失敗(我在這裡耗了不少時間)

可以改為:

<script src="http://ip:port/socket.io/socket.io.js"></script>

(對應伺服器的ip地址和連接埠號碼,比如說localhost和80連接埠)

(2)實現廣播的時候,參考官網的寫法,竟然不起作用,如:

var io = require(‘socket.io‘).listen(80);io.sockets.on(‘connection‘, function (socket) {  socket.broadcast.emit(‘user connected‘);  socket.broadcast.json.send({ a: ‘message‘ });});

後來看了這個:http://stackoverflow.com/questions/7352164/update-all-clients-using-socket-io

改為以下才起作用:

io.sockets.emit(‘users_count‘, clients);

四、

五、源碼下載

  Nodejs多人聊天室

ps:

1、在命令列運行

node main.js

然後在瀏覽器中開啟index.html,如果瀏覽器(ff、Chrome)不支援,請升級到支援WebSocket的版本.

2、推薦node.js的IDE WebStorm

 

文章來源:使用node.js和socket.io實現多人聊天室

使用node.js和socket.io實現多人聊天室

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.