如何使用Socket.io-client让Node.js实例与cloudfoundry上运行Socket.io的另一个Node.js实例对话?

如何使用Socket.io-client让Node.js实例与cloudfoundry上运行Socket.io的另一个Node.js实例对话?,node.js,socket.io,Node.js,Socket.io,我正在尝试使用Socket.io连接2台sperate Node.js服务器,并使用cloudfoundry连接Socket.io-client。当我使用本地运行的两个实例测试代码时,下面的socket.io-client-Node.js代码按预期工作。当socket.io服务器处于cloudfoundry状态时,浏览器中的一个简单javascript客户端能够连接并正常工作。但是,当我尝试使用socket.io-client Node.js连接到cloudfoundry上运行的实例时,它会以几

我正在尝试使用Socket.io连接2台sperate Node.js服务器,并使用cloudfoundry连接Socket.io-client。当我使用本地运行的两个实例测试代码时,下面的socket.io-client-Node.js代码按预期工作。当socket.io服务器处于cloudfoundry状态时,浏览器中的一个简单javascript客户端能够连接并正常工作。但是,当我尝试使用socket.io-client Node.js连接到cloudfoundry上运行的实例时,它会以几种不同的方式失败。它要么什么也不做,尝试连接两次然后失败,要么只连接到立即断开连接

我能想到的唯一一件事是cloudfoundry上的nginx正在导致某些东西损坏。浏览器中的javascript客户端可以连接、发送和接收数据,而web浏览器无法连接的机器上运行的Node.js代码基本相同,这对我来说毫无意义。有什么想法或者我应该离开cloudfoundry吗

var socketioclient = require('socket.io-client').connect('http://someapiaddress.cloudfoundry.com');

socketclient = socketioclient.socket;
socketclient.on('connect_failed', function(){
    console.log('Connection Failed');
});

socketclient.on('connecting', function(){
    console.log('connecting')
});

socketclient.on('connect', function(socket) {
    console.log('Connected!');

    socketclient.on('message', function(data){
       console.log(data)
    });
    socketclient.on('disconnect', function(){
       console.log('disconnect')
 });

}))

是的,
nginx
会在运行多个服务器实例时产生问题,每次都会截获请求并将socket.io请求发送到不同的服务器实例。这就是为什么会出现许多不同的错误:

  • 什么都不做
  • 尝试连接两次后失败,或
  • 只连接到立即断开连接
  • 您必须使用名为
    粘性会话的方法来处理此问题。请看这篇文章,它解释了问题并给出了解决方案