定義
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で再現