【发布时间】:2020-05-09 13:11:08
【问题描述】:
我正在使用 npm ws 作为我的 WebSocket 服务器,并使用此实现:
const fs = require("fs");
const https = require("https");
const WebSocket = require("ws");
const server = https.createServer({
cert: fs.readFileSync("./cert.pem"),
key: fs.readFileSync("./key.pem"),
});
const wss = new WebSocket.Server({ server, clientTracking: true });
这是我的听众:
wss.on("connection", function connection(ws) {
console.log("connection");
ws.on("close", function close(ws) {
console.log("disconnect");
});
ws.on("message", function incoming(message) {
console.log("INBOUND MESSAGE: %s", message);
obj = JSON.parse(message);
switch (obj.action) { ....
我正在使用套接字服务器来设置纸牌游戏。我可以将来自on("message 的ws 连接附加到一个对象(例如player[id].ws = ws),并且我可以使用该附加数据发送消息(例如ws.send(player[id].ws, ____);)
我面临的挑战是当连接断开时,我需要清理玩家周围的所有游戏数据(游戏数据、玩家数据等)。但是,当"close" 侦听器触发时,ws 数据中没有任何数据,因此我可以识别谁丢弃并清理数据?
我希望能够将on("message" 设置为ws.playerId='ksjfej,所以当我得到ws("close" 时,我可以使用ws.playerId 进行清理。
【问题讨论】: