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中的/
表示连接到默认名称空间。