1. 程式人生 > >express + socket.io實現超簡易聊天室

express + socket.io實現超簡易聊天室

什麼是socket.io

socket.io是webSocket的一個封裝元件,實現雙向通訊,可以用這個來實現聊天室功能、線上小遊戲等等,是個有趣好玩的東西,博主就喜歡搗鼓這些

實現聊天室思路

聊天室就是要聊天嘛,就像打電話一樣,我這邊說話你那邊應該要馬上聽到,所以就需要用到雙向通訊,瀏覽器發出一條資訊比如是一個字串'message',服務端接收然後立馬將它傳送出去給需要接收的瀏覽器

首先下載express和socket.io的依賴包

cnpm install --save express
cnpm install --save socket.io

前端程式碼

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .chat{ width: 300px; height: 500px; text-align: center; margin: 0 auto; border: 1px solid #ccc; } .message
{ width: 100%; height: 460px; }
</style> </head> <body> <div class="chat"> <div class="message"></div> <input id="text" type="text" placeholder="請輸入聊天資訊"> <button onclick="chat()">傳送資訊</button
>
</div> <script src="/socket.io/socket.io.js"></script> <script> var message = document.getElementsByClassName('message')[0] var socket = io.connect('http://localhost:1234'); //從服務端接收資料 socket.on('message',function (data) { message.innerHTML += data + '<br>'; }) function chat(){ var text = document.getElementById('text').value //向服務端傳送資料 socket.emit('message', {message:text}); } </script> </body> </html>

node程式碼

var express = require('express')
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);


//提供靜態檔案服務
app.use(express.static(__dirname));



io.on('connection', function (socket) {
    socket.on('message', function (data) {
        //服務端像所以也沒傳送資料
        io.sockets.emit('message', data.message);
    });

});

server.listen(1234,function () {
    console.log('連線成功');
})

幾個要點稍微提一下首先是前端引入js檔案時候

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

可能你會疑惑本地沒有這個檔案,但其實你在服務端執行你的html時候它就會自動生成所以不用擔心直接這樣引入就行啦

關於傳送接收資訊

socket.emit()//傳送
socket.on()//接收

io.sockets.emit()//只要服務端這樣哦,像所有連線server的傳送就像廣播了

最後執行node,開啟兩個對應埠的html,結果為




如果有哪裡說的不對或者不好還請見諒!謝謝!