ソケット.io
Socket.IO は、Node.js に基づくリアルタイム アプリケーション フレームワークで、インスタント メッセージング、通知とメッセージ プッシュ、リアルタイム分析、その他のシナリオで広く使用されています。
序文
スタンドアロンのソケット サービスがビジネスをサポートできない場合は、クラスター デプロイメントの実装が必要ですリンクを読むには、egg-socket.io を組み合わせてください。
1. 構成の概要
まず、config フォルダー内の構成ファイルを確認します。
// {app_root}/config/config.${env}.js
exports.io = {
init: {
}, // passed to engine.io
namespace: {
// 分别为 连接不同命名空间时 配置不同的中间件
'/': {
connectionMiddleware: [],
packetMiddleware: [],
},
'/example': {
connectionMiddleware: [],
packetMiddleware: [],
},
},
//配置socket-adapter 的适配类型
redis: {
host: '',
port: 6379
}
};
ソケット接続が多すぎてクラスターのデプロイが必要な場合は、アダプターとして redis を選択してください。
Egg-socket.io は、socket.io-redis を内部的に統合しており、設定ファイルで redis が使用されている場合、デフォルトで redis が適応ソースとして使用されます。
Redis パイプラインのサブスクリプションおよびパブリッシュ機能を利用して、メッセージの同期を実現します
。
2. 利用手順
1.準備
ノード環境と Redis サービス
コードは以下の通り(例):
簡単なhtmlを書きました
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>socket.io演示客户端</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js"></script>
</head>
<body>
<h1>socket.io演示客户端</h1>
<input type="text" placeholder="发送消息" id="roomId"><button>发送</button>
<div>
<button id="loginout">退出</button>
</div>
<div id="word">
</div>
</body>
<script>
$=function (id) {
return document.getElementById(id);
};
const room = 'wasteHome' //Math.random().toFixed(3)*1000
const userId = Math.random().toFixed(3)*1000
var socket = io.connect(`127.0.0.1:7001/wasteHome?userId=${
userId}&room=`+room);
var setRoom = document.getElementsByTagName("button")[0],
msg = $("msg"),
word = $("word"),
toRoom=$("toRoomId"),
loginOut=$("loginout");
setRoom.onclick=function(){
socket.emit('sayHi',{
userId,
room:'wasteHome',
payload: {
msg : '我是kd来自'+room+'房,编号是===='+userId,
},
});
};
loginOut.onclick = ()=> {
alert('我退出了')
socket.disconnect();
}
// 当收到对方发来的数据后触发 message 事件
socket.on('message',function (data) {
console.log('收到了==========',data)
word.innerHTML+="<p>"+data+"</p>";
});
socket.on('online',function (data) {
alert(data.message)
console.log('我上线了==========',data)
});
socket.on('leave',function (data) {
alert(data.message)
console.log(33333)
});
</script>
</html>
2. テスト
わずかに。。。