【发布时间】:2013-02-05 08:23:33
【问题描述】:
我有一个由 node.js 服务器加上其他文件和一个 HTML 文件组成的应用程序。 HTML 文件是我的客户端,它必须与 node.js 服务器通信。 node.js 服务器使用与其他 node.js 文件创建的对象通过以太网电缆与 PLC 通信。 所以我在服务器和客户端之间创建了一个socket.io连接,在服务器和PLC之间创建了一个tcp连接。
现在出现错误:如果我在连接所有电缆的情况下启动服务器和客户端,我会从 PLC 得到正确答案,如果我在运行时断开电缆,我会收到以下错误:
events.js:71
throw arguments[1]; // Unhandled 'error' event
^
Error: write EPIPE
at errnoException (net.js:770:11)
at Socket._write (net.js:552:19)
at Socket.write (net.js:511:15)
at Timer.<anonymous> (C:\Users\Massimo\workspace\Scada\plc_driver\fw_driver.
js:289:20)
at Timer.exports.setInterval.timer.ontimeout (timers.js:234:14)
我已经尝试使用代码管理服务器中的错误
communication_socket.on('error', function () {
console.log('Error!');
});
我正在运行节点 0.8.18 并且所有软件包都已更新(我已经进行了 npm update -g)
编辑 代码结果
process.on('uncaughtException', function(err) {
console.log(util.inspect(err));
});
是:
{ [Error: write EPIPE] code: 'EPIPE', errno: 'EPIPE', syscall: 'write' }
有什么建议吗?
【问题讨论】:
-
所以错误处理程序根本没有被调用?
-
不,我什至尝试将行
C:\Users\Massimo\workspace\Scada\plc_driver\fw_driver. js:289:20(服务器尝试写入 PLC 的位置)放在try-catch内,但没有捕获到异常 -
所以在 fw_driver.js:289 上写入了通信套接字,对吗?
-
我有一个
this.conn_write.write(new Buffer(message,'ascii'));conn_write 创建为this.conn_write = net.createConnection(port,ip);我确定这不是范围问题。我认为问题是拔下电缆时的不触发事件。 -
不管怎样,使用
https已经为我解决了这个问题。
标签: javascript node.js socket.io