javascript - Node.js EPIPE 错误

标签 javascript node.js socket.io

我有一个由 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!');
});

我正在运行 Node 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' }

有什么建议吗?

最佳答案

套接字 IO 错误不会以您可以尝试/捕获它们的方式抛出。您必须向每个套接字添加一个 on('error', [callback]) 处理程序。您可以在 Should stream.pipe forward errors? 中阅读有关此的一些相关讨论。您没有说明为什么有超时以及超时正在写入哪个套接字,所以我无法为您提供更多帮助。

关于javascript - Node.js EPIPE 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14702978/

相关文章:

javascript - VueJS : what does an html attribute prefixed with a colon signify?

javascript - PHP 或 Javascript/Jquery - 计算新生儿/成人的年龄

javascript - 如何将 mysql 的 datediff 与 sequelizejs 一起使用

node.js - Socket.io 'Handshake' 因集群和粘性 session 而失败

javascript - 如何通过 socketid 将 socket.io 套接字添加到房间?

javascript - 如何从一个地方获取文本然后在同一页面的其他地方呈现?

javascript - 在 https.onCall 云函数中的 request.post 回调中将 HttpsException 发送到 Android 应用程序

javascript - express.js,如果删除下一个参数,错误处理程序将不起作用

javascript - 从 MongoDB 中的嵌套数组中查找公共(public)属性

laravel - 我在浏览器端需要什么 URI 才能从 heroku 的 redis 插件连接到 amazon redis 服务器