我試圖重新創建一個硬件串行服務器的功能與節點,它實際上工作,但我從套接字實例已被關閉錯誤。Net.Socket實例不會消失在NodeJS
下面是一個簡化版本的應用程序,以顯示我在做什麼...
var net = require('net');
var SerialPort = require('serialport');
var connectionCounter = 0;
var port = new SerialPort('/dev/ttyUSB0', function() {
var server = net.createServer();
server.on('connection',function(socket) {
connectionCounter++;
var connNumber = connectionCounter;
socket.on('error', function() {
console.log('socket ' + connNumber + ' errored');
});
socket.on('data', function(data) {
port.write(data);
});
port.on('data', function(data) {
socket.write(data);
});
});
server.listen(8887, '127.0.0.1');
}
});
所以這是發送到8887端口的代碼的第一塊工作正常,並返回數據傳回了通過插座。錯誤從第二個塊開始。在這個例子中,我保持套接字實例的計數並輸出帶有錯誤的套接字實例號。所以隨着程序的運行,套接字實例的數量不斷增加。最近的實例最終將處理數據,但我無法弄清楚我需要刪除的內容來清理所有先前的套接字實例,以便它們將停止嘗試處理傳入的數據。
我試過socket.end()和socket.destroy(),但這些似乎並沒有工作。我是否需要儘可能刪除服務器本身並重新創建它?
將套接字設置爲null或undefined,或者甚至使用delete都不起作用。不知何故,它仍在監聽該端口並拋出錯誤消息。我想刪除錯誤的東西嗎? – tantangula
你對記錄套接字是正確的,但事實證明,我在串口上放置了一個監聽器,導致了錯誤。感謝您花時間幫助。 – tantangula