問題:
VS Code 中的本地開發運行沒有問題或崩潰。但是,當我將應用程式上傳到服務器 (node.js) 時,它會一直運行,直到建立 Socket.io 連接或重繪 連接的網頁。我不知道這是否與下面的檔案路徑中的管理 UI 相關,或者這是否是一般的 Socket.io 問題。也許這也與中間件有關,該中間件在操作完成之前一直保持請求,因此無法訪問不存在的資料。
我已經嘗試更新 npm 包,但沒有任何改變。
// middleware is executed on every request
var Map = require('./file')
module.exports = (io, socket) => {
socket.use(async (packet, next) => {
var key = socket.handshake.auth.key
var data = Map.get(key)
while(!data.action) { // true for finished or false for loading
await new Promise(resolve => setTimeout(resolve,10))
}
socket.data = data
next()
})
}
服務器控制臺:
/usr/src/app/node_modules/@socket.io/admin-ui/dist/index.js:233
socket.data._admin.transport = transport.name;
^
TypeError: Cannot set properties of undefined (setting 'transport')
at Socket.<anonymous> (/usr/src/app/node_modules/@socket.io/admin-ui/dist/index.js:233:42)
at Socket.emit (node:events:390:28)
at WebSocket.onPacket (/usr/src/app/node_modules/engine.io/build/socket.js:214:22)
at WebSocket.emit (node:events:390:28)
at WebSocket.onPacket (/usr/src/app/node_modules/engine.io/build/transport.js:92:14)
at WebSocket.onData (/usr/src/app/node_modules/engine.io/build/transport.js:101:14)
at WebSocket.<anonymous> (/usr/src/app/node_modules/engine.io/build/transports/websocket.js:20:19)
at WebSocket.emit (node:events:390:28)
at Receiver.receiverOnMessage (/usr/src/app/node_modules/ws/lib/websocket.js:1022:20)
at Receiver.emit (node:events:390:28)
Node.js v17.3.1
uj5u.com熱心網友回復:
我也在 GitHub 上直接向開發者提問,得到了答復。
有人告訴我使用socket.data = value.
如果我將其更改socket.socketDate為例如,則它可以正常作業。
使用 socket.io admin ui 的參考代碼查看 GitHub 上的完整答案:
github socket.io-admin-ui issue-55
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/512332.html
標籤:javascript节点.js插座网络套接字套接字.io
下一篇:套接字未完全填充接收緩沖區
