1

我正在使用 Windows 上当前最新版本的 nodejs + socket.io 开发一个简单的应用程序。在客户端创建套接字时遇到问题,但 socket.emit 在控制台中导致以下输出(使用 Google Chrome):

GET http://0.0.34.184:8888/socket.io/1/?t=1321385855665&jsonp=0

这很奇怪,因为我在 localhost:8888 上进行测试,所以它应该至少是 127.0.0.1 而不是 0.0.34.184。页面上的socket.io客户端在标签中向服务器请求如下:

<script type="text/javascript" src="socket.io/socket.io.js"></script>

然后我使用以下代码进行连接:

socket = io.connect('localhost:8888');
socket.on("my_event", receiveNetEvent);

console.log('LOG: sio init complete, socket=' + socket);

日志指出 socket=[Object object] 不是 null 或 undefined 所以一切都应该工作。

发送本身在以下函数中执行:

function sendRequest(request){
    socket.emit('request', request);
}

传递给函数的请求对象是这样形成和传递的:

var initRequest = {};
initRequest.subject = 'weather';
initRequest.key = 'initial';

sendRequest(initRequest);

它是一个有效的 json 对象,再次根据console.log().

这一切让我完全不知道发生这种情况的任何可能原因。

4

3 回答 3

2

尝试将 http:// 添加到连接路径。这为我解决了这个错误。

socket = io.connect('http://localhost:8888');
于 2012-03-02T11:55:45.667 回答
1

我面临同样的问题,但我有不同的原因。我的设置是在具有端口 9000 的 tomcat 服务器上运行套接字客户端,并连接到运行 nodejs 的 localhost:80,我没有意识到该端口是强制性的,即使它默认为 80。

所以我给了端口并更换了

io.connect('http://localhost') 与 io.connect('http://localhost:80')

因为我的两台服务器都指向同一个域,在这种情况下 localhost...socket io 出于某种原因占用了端口 9000

希望它可以帮助某人。

于 2012-06-30T15:04:34.157 回答
1

我也面临同样的问题,但通过仅强制 xhr-polling 到服务器端 javascript 解决了它,并且解决了。

    var io = require('socket.io').listen(8000);
    io.configure(function () {
      io.set('transports', ['xhr-polling']);
    });
<..Rest code..>
于 2012-09-24T05:54:13.520 回答