当其中一个服务器文件中有 websocket 时,如何停止 Ember CLI 的 http-mock 服务器抛出错误?
How to stop Ember CLI's http-mock server throwing an error when there are websockets in one of the server files?
我的一个 http-mock 服务器文件中有一个 websocket,初始化如下:
var WebSocketServer = require('ws').Server;
var socketServer = new WebSocketServer({port: 13434, path: "/update"});
在文件的后面,我在连接时发生了以下情况:
socketServer.on('connection', function(ws) {
ws.on('close', function(message) {
clearInterval(sendResults);
});
ws.on('message', function(message) {
handleClientMessage(ws, message);
});
sendResults = setInterval(function() {
ws.send(JSON.stringify(getResultsFromEntries()));
}, resultInterval);
});
但是,每当我编辑任何服务器文件时,我都会收到以下错误:
File changed: "mocks/entry.js"
Just getting started with Ember? Please visit http://localhost:4200/ember-getting-started to get going
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE 0.0.0.0:13434
at Object.exports._errnoException (util.js:907:11)
at exports._exceptionWithHostPort (util.js:930:20)
at Server._listen2 (net.js:1250:14)
at listen (net.js:1286:10)
at net.js:1395:9
at nextTickCallbackWith3Args (node.js:453:9)
at process._tickCallback (node.js:359:17)
我猜我需要检测何时发生文件更改并关闭当前的 websocket 连接。 On process exit 似乎直到服务器死机才被调用,然后 process.on('exit', function() {}) 被称为服务器刷新的次数。它并没有太困扰我,因为我有一个脚本可以在 ember 服务器出现故障时重新启动它,但是其他开发人员不喜欢 ember 服务器在编辑服务器文件时出现故障。有什么想法吗?
您是否应该 closing/terminating 关闭 上的连接?
我最终将一个新的 WebSocketServer 设置为 属性 进程(它在服务器重新启动后持续存在)然后在文件顶部我关闭了以前的 WebSocketServer(如果有的话):
if (process["updateSocketServer"]) {
process["updateSocketServer"].close();
process["updateSocketServer"] = undefined;
}
然后设置一个新的 WebSocketServer:
process["updateSocketServer"] = new WebSocketServer({port: 13434, path: "/update"});
然后我在连接上做了以下操作:
process["updateSocketServer"].on('connection', function(ws) {
// Connection code.
});
我的一个 http-mock 服务器文件中有一个 websocket,初始化如下:
var WebSocketServer = require('ws').Server;
var socketServer = new WebSocketServer({port: 13434, path: "/update"});
在文件的后面,我在连接时发生了以下情况:
socketServer.on('connection', function(ws) {
ws.on('close', function(message) {
clearInterval(sendResults);
});
ws.on('message', function(message) {
handleClientMessage(ws, message);
});
sendResults = setInterval(function() {
ws.send(JSON.stringify(getResultsFromEntries()));
}, resultInterval);
});
但是,每当我编辑任何服务器文件时,我都会收到以下错误:
File changed: "mocks/entry.js"
Just getting started with Ember? Please visit http://localhost:4200/ember-getting-started to get going
events.js:141
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE 0.0.0.0:13434
at Object.exports._errnoException (util.js:907:11)
at exports._exceptionWithHostPort (util.js:930:20)
at Server._listen2 (net.js:1250:14)
at listen (net.js:1286:10)
at net.js:1395:9
at nextTickCallbackWith3Args (node.js:453:9)
at process._tickCallback (node.js:359:17)
我猜我需要检测何时发生文件更改并关闭当前的 websocket 连接。 On process exit 似乎直到服务器死机才被调用,然后 process.on('exit', function() {}) 被称为服务器刷新的次数。它并没有太困扰我,因为我有一个脚本可以在 ember 服务器出现故障时重新启动它,但是其他开发人员不喜欢 ember 服务器在编辑服务器文件时出现故障。有什么想法吗?
您是否应该 closing/terminating 关闭 上的连接?
我最终将一个新的 WebSocketServer 设置为 属性 进程(它在服务器重新启动后持续存在)然后在文件顶部我关闭了以前的 WebSocketServer(如果有的话):
if (process["updateSocketServer"]) {
process["updateSocketServer"].close();
process["updateSocketServer"] = undefined;
}
然后设置一个新的 WebSocketServer:
process["updateSocketServer"] = new WebSocketServer({port: 13434, path: "/update"});
然后我在连接上做了以下操作:
process["updateSocketServer"].on('connection', function(ws) {
// Connection code.
});