双向通信之socket.io

定义

是一个WebSocket库,包括了客户端的js和服务器端的nodejs,它的目标是构建可以在不同浏览器和移动设备上使用的实时应用.

特点

  • 易用性: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复制代码

转载于:https://juejin.im/post/5cf73406f265da1b9612f246

猜你喜欢

转载自blog.csdn.net/weixin_33736048/article/details/91426376