socket.io-无法正常工作,在某种轮询调用中具有404

我正在尝试使用socket.io设置服务器,但结果不佳。

我主要遵循此指南,尽管它有些过时了:http : //www.williammora.com/2013/03/nodejs-tutorial-

building-chatroom-with.html

问题来自socket.io,我不确定是客户端还是服务器端。似乎正在尝试不断轮询服务器,但又找回了404。听起来好像socket.io没有运行,但对我来说一切都很好。它也可能与路径和“公共”目录有关,但我真的不知道。

127.0.0.1 - - [Thu, 17 Jul 2014 00:51:36 GMT] "GET /socket.io/?EIO=2&transport=polling&t=1405558296120-0 HTTP/1.1" 404 73 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4"

127.0.0.1 - - [Thu, 17 Jul 2014 00:51:37 GMT] "GET /socket.io/?EIO=2&transport=polling&t=1405558297181-1 HTTP/1.1" 404 73 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4"

127.0.0.1 - - [Thu, 17 Jul 2014 00:51:39 GMT] "GET /socket.io/?EIO=2&transport=polling&t=1405558299207-2 HTTP/1.1" 404 73 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.76.4 (KHTML, like Gecko) Version/7.0.4 Safari/537.76.4"

var exec = require( "child_process" ).exec;

var path = require( "path" );

var morgan = require( "morgan" );

var bodyParser = require( "body-parser" );

var _ = require( "underscore" );

var express = require( "express" );

var app = express();

var http = require( "http" ).createServer( app );

var io = require( "socket.io" )( http );

app.set( "ipaddr", "127.0.0.1" );

app.set( "port", 8080 );

//support JSON, urlencoded, and multipart requests

app.use( bodyParser() );

//log the requests using morgan

app.use( morgan() );

//specify the Jade views folder

app.set( "views", __dirname + "/../views" );

//set the view engine to Jade

app.set( "view engine", "jade" );

//specify static content

app.use( express[ "static" ]( "public", __dirname + "/../public" ) ); //using map-access of static so jslint won't bitch

io.on( "connection", function( socket )

{

console.log( "A user connected." );

});

script( src="js/socket.io.js" )

var socket = io.connect( "http://localhost:8080" );

我从以下节点获取了客户端js文件:node_modules / socket.io / node_modules / socket.io-client /

socket.io.js

该路径与我正在使用的教程所说的或socket.io所说的都不匹配,所以也许这就是问题所在,但看起来可能是正确的文件。

这里有什么帮助吗?

有关其他信息,这是我的文件夹层次结构:

Webserver/

my_modules/

server.js

node_modules/

body-parser/

express/

jade/

morgan/

socket.io/

underscore/

public/

css/

js/

server.js

views/

index.jade

index.js

package.json

my_modules文件夹中的server.js是我在服务器端启动socket.io的位置。js文件夹中的server.js是要从网站连接的客户端代码。

回答:

看来Socket.IO无法拦截以开头的请求/socket.io/。这是因为在您的情况下,侦听器是appExpress处理程序。您必须http成为侦听器,以便Socket.IO可以访问请求处理。

尝试更换

app.set( "ipaddr", "127.0.0.1" );

app.set( "port", 8080 );

http.listen(8080, "127.0.0.1");

有关详细信息,请参阅文档:http :

//socket.io/docs/#using-with-express-3/4

以上是 socket.io-无法正常工作,在某种轮询调用中具有404 的全部内容, 来源链接: utcz.com/qa/415630.html

回到顶部