是一個WebSocket庫,包括了客戶端的js和服務器端的nodejs,它的目標是構建能夠在不一樣瀏覽器和移動設備上使用的實時應用.html
yarn add socket.io
複製代碼
let express = require('express');
let path = require('path');
let app = express();
app.get('/', function (req, res) {
res.sendFile(path.resolve('index.html'));
});
let server = require('http').createServer(app);
let io = require('socket.io')(server);
io.on('connection', function (socket) {
console.log('客戶端已經鏈接');
socket.on('message', function (msg) {
console.log(msg);
socket.send('sever:' + msg);
});
});
io.of('/news').on('connection', socket => {}); // 經過of指定房間 默認爲/
socket.join(roomNamw);// 進入房間
socket.leave(roomNamw);// 離開房間
socket.emit('message', msg); // 向多個客戶端廣播
socket.broadcast.emit('message', msg); // 向除本身以外的客戶端發送廣播
server.listen(80);
複製代碼
<script src='/socket.io/socket.io.js'></script>
let socket = io.connect('/'); // 當啓動一個socketio服務時,會劃分多個命名空間,/爲默認的命名空, 不是表明根路徑
//監聽與服務器端的鏈接成功事件
socket.on('connect',function(){
console.log('鏈接成功');
socket.send('客戶端發送');
});
//監聽與服務器端斷開鏈接事件
socket.on('disconnect',function(){
console.log('斷開鏈接');
});
io.sockets.adapter.rooms // 獲取房間列表
io.sockets.adapter.rooms[room].sockets // 取得進入房間內所對應的全部sockets的hash值
複製代碼