ws_*_*dev 5 websocket node.js microsoft-edge
我在 Web 应用程序中使用 WebSockets。在 Chrome 和 Firefox 中,一切正常。在 Edge 浏览器中,一段时间不活动后,连接就会中断。并在控制台中出现消息:
websocket错误:网络错误12030,与服务器的连接异常终止。
对于应用程序来说,连接是永久性的很重要。
以下是服务器和客户端的部分:
服务器:
var options = {
key: fs.readFileSync(path.join(__dirname, 'cert/server.key')),
cert: fs.readFileSync(path.join(__dirname, 'cert/server.crt'))
};
var server = https.createServer(options, app);
wsServer = new WebSocketServer({
httpServer: server,
autoAcceptConnections: false
});
// Handle Socket Request
wsServer.on('request', function(request) {
try {
// Do Stuff
var connection = request.accept('echo-protocol', request.origin);
// Do Stuff
} catch(error) {
console.log('Error during socket request: ', error);
}
// Handle Socket message
connection.on('message', function(message) {
try {
// Do Stuff
} catch(error) {
console.log('Error while receiving message: ', error);
}
});
// Handle Socket disconnect
connection.on('close', function(reasonCode, description) {
try {
// Make sure to remove closed connections from the global pool
delete clients[connection.location][connection.id];
} catch(error) {
console.log('Error while disconnecting socket: ', error);
}
});
});
// start server, listen to port
server.listen(49152, function() {
console.log((new Date()) + ' Server is listening on port 49152');
});
Run Code Online (Sandbox Code Playgroud)
客户
// connecting to the web server
var socket = new WebSocket(socketProtocol + '://' + socketServer + '', 'echo-protocol');
// listening for server response
socket.onmessage = function (message) {
// Do Stuff
};
// listening for any socket error
socket.onerror = function (error) {
console.log('WebSocket error: ' + error);
};
// listening for connection to be open
socket.onopen = function (e) {
console.log('connected');
};
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会发生这种情况?
我已经考虑过使用 socket.io 和/或进行某种轮询以保持连接。但我希望有一种方法,我不必改变一切。
| 归档时间: |
|
| 查看次数: |
6222 次 |
| 最近记录: |