天天看點

WebSocket實作簡單聊天室

看了之前的文章,想必大家對WebSocket的原理已經有了一個深入的了解,這一篇文章我們來看一下具體該如何去使用它。

這裡,我用nodejs-websocket實作一個簡單的多人聊天室,從這個小案例中來學會使用WebSocket。

nodejs-websocket用法參見官方api:

https://www.npmjs.com/package/nodejs-websocket

伺服器端:

//安裝引入nodejs-websocket
var ws = require('nodejs-websocket');
console.log("開始建立連接配接...")
//建立服務
var server = ws.createServer((conn) => {
	conn.on("text", (str) => {
        console.log("接收的資訊 "+str)
        //發送資訊
        broadcast(str)
    })
    conn.on("close", (code, reason) => {
        console.log("關閉連接配接")
    })
})
function broadcast(str) {
	//把消息發送到每一個連接配接服務的用戶端
    server.connections.forEach(function(connection) {
        connection.sendText(str);
    })
}
//監聽端口
server.listen(3000)
console.log("WebSocket建立完畢")
           

用戶端:

<!doctype html>
<html >
<head>
    <meta charset="UTF-8">
    <title>聊天室1</title>
    <script src="http://static.wanlianjin.com/data/m/wlcs/js/nocar/jquery-1.7.2.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
    <ul id="messages"></ul>
    <input id="m" autocomplete="off" /><button>Send</button>

    <script>
       if(window.WebSocket){
       	//連接配接伺服器位址
            var ws = new WebSocket('ws://100.39.8.55:3000');
            ws.onopen = function(e){
                console.log("連接配接伺服器成功");
                $('button').click(() => {
                    if($('#m').val()){
                       //發送消息
                        ws.send('小紅:'+$('#m').val());
                        $('#m').val('')
                    }
                })
            }
            ws.onclose = function(e){
                console.log("伺服器關閉");
            }
            ws.onerror = function(){
                console.log("連接配接出錯");
            }
			//接收消息
            ws.onmessage = function(e){
                $('#messages').append('<li>'+ e.data +'</li>')   
            }
        }
    </script>
</body>
</html>
           

繼續閱讀