2017-09-16 103 views
0

我有一个的WebSocket在初始化为我的HTTP的模拟服务器文件中的一个如下:如何阻止Ember CLI的http-mock服务器在其中一个服务器文件中存在websockets时抛出错误?

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) 

我猜我需要检测文件更改何时发生并关闭curre nt websocket连接。在进程退出似乎没有被调用,直到服务器死亡,然后process.on('exit',function(){})被称为服务器刷新的次数。它不会让我感到困扰,因为我有一个脚本,在脚本重新启动后,如果脚本停止运行,但其他开发人员不喜欢编辑服务器文件时耗尽服务器。有任何想法吗?

回答

1

我最终创下了新的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. 
}); 
0

您是否正在关闭/终止连接关闭

+0

感谢您的回应。关闭似乎没有被调用时,一个服务器文件更改,但我确实设法得到它的工作。 – KroneckerDeIta

相关问题