我有一个Node.js脚本,该脚本应该通过套接字连接定期访问SailsJS应用程序。客户端和服务器在不同网络上的物理不同机器上运行。 SailsJS应用程序代理在nginx之后。总的来说,这是可行的。但是,在随机时间,连接已建立,但Websocket连接中的第一个post
请求从未到达其目的地。
代码基本上是这样的:
var socketIOClient = require('socket.io-client');
var sailsIOClient = require('sails.io.js');
var io = sailsIOClient(socketIOClient);
io.sails.url = 'https://foo.foo:443';
io.sails.rejectUnauthorized = false;
io.socket.on('connect', function() {
console.log("Connected!")
io.socket.post('/someroute', { someOptions: "foo" } ,
function(data) {
console.log(data);
});
});
io.socket.on('disconnect', function(){
console.log("Disconnected!");
});
io.socket.on('connect_error',function () {
console.log("connect_error!");
});
在失败的情况下,console.log("Connected!")
之后什么也不会发生。在nginx的日志中什么也没有出现(与成功的案例相反),io.socket.post
的回调永远不会执行。
对我来说最重要的问题是:问题在哪一边?客户端还是服务器?
我该如何调试并缩小问题范围?可能是网络问题吗?还是配置,实现或脚本本身有问题?