双向通信之socket.io

定義

nodejs jsのクライアント側とサーバー側を含むのWebSocketライブラリは、その目標は、異なるブラウザやモバイルデバイス上で使用することができ、リアルタイムアプリケーションを構築することにあります。

機能

  • 使いやすさ:socket.ioは非常に使いやすく、便利、サーバとクライアントをカプセル化します。
  • クロスプラットフォーム:socket.ioサポートクロスプラットフォーム、あなたはより多くの選択肢を持っていることを意味し、リアルタイムアプリケーションは、自分の好きなプラットフォームで開発することができます。
  • 適応:それは自動的な方法のWebSocket、AJAXロングポーリング、インラインフレームストリーム、およびので、ブラウザに応じてリアルタイムのネットワーク・アプリケーションは非常に便利で、ユーザーフレンドリーで、IE5の最小サポートされているブラウザの様々な最良のモードを選択0.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