node.js不能GET /socket.io

我有以下应用程序与express / socket.io(该应用程序正在侦听,并没有任何错误生活)。 当我http请求它时,我得到以下错误:

GET http://xxxxxxx.com:3035/socket.io/1/?t=1449090610579 400 (Bad Request) 

并在http://xxxxxxx.com:3035/socket.io socket.io响应我得到:

 Cannot GET /socket.io 

app.js:

 var express = require('express'), http = require('http'), sio= require('socket.io'), fs=require('fs'), app = express(); var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'xxxxxxx', password: 'xxxxxxx', database: 'xxxxxxxxx' } ); connection.connect(); // Start the server var server=app.listen(3035, function () { console.log("Express server listening on port %d",3035); }); app.io=io=sio.listen(server); . . . 

在客户端:

 var socket = io.connect('http://xxxxxx.com:3035'); 

io.connect()需要一个URL,例如http://example.com:3035

您正在通过xxxxxx.com:3035这是不正确的URLforms。


另外请注意,如果您只是试图连接到网页所在的服务器和端口,则可以使用:

 io() 

要么

 io.connect() 

而socket.io库将连接到与网页相同的主机和端口。

你的sio是一个function。 你需要用你的服务器作为参数来调用它。

添加server=require('http').Server(app) sio=require('socket.io')(server)

你应该初始化客户端的默认连接

 io.connect( "/" ); 

根据默认的文档,socket.io将连接到渲染的网页所在的主机和端口。 path中的/表示连接到默认名称空间。