雙向通訊之socket.io

定義

是一個WebSocket庫,包括了客戶端的js和服務器端的nodejs,它的目標是構建能夠在不一樣瀏覽器和移動設備上使用的實時應用.html

特色

  • 易用性:socket.io封裝了服務端和客戶端,使用起來很是簡單方便。
  • 跨平臺:socket.io支持跨平臺,這就意味着你有了更多的選擇,能夠在本身喜歡的平臺下開發實時應用。
  • 自適應:它會自動根據瀏覽器從WebSocket、AJAX長輪詢、Iframe流等等各類方式中選擇最佳的方式來實現網絡實時應用,很是方便和人性化,並且支持的瀏覽器最低達IE5.5。

使用

  • 安裝
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複製代碼
相關文章
相關標籤/搜索