当前位置: 首页 > 面试题库 >

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

劳高爽
2023-03-14
问题内容

我正在尝试使用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



 类似资料:
  • 问题内容: 只是尝试删除所有文档,并这样做: 然后承诺: 我得到答复: 但是当我搜索时,我仍然会得到结果。 我做错什么了? 问题答案: 不确定是否重要,但是您也可以编码: 要尝试的另一件事是使用POST方法(调用update的首选方法):

  • 问题内容: 我是PHP的新手,正在使用mail函数发送无法正常工作的电子邮件。我收到成功消息,但仍然无法正常工作 相同的代码 我是否缺少任何内容,我是否需要为此功能包括任何文件。.我来自asp.net,这是在网站上找到的基本脚本。 我尝试了其他与邮件相关的脚本,这些脚本也无法使用。 我正在网站上而不是在本地上运行此脚本 问题答案: 这可能是配置错误。如果您坚持使用PHP 函数,则必须进行编辑。 如

  • 问题内容: 尽管我很确定这是昨天或前一天工作的,例如,在IE10中不再起作用。我已经测试了我的浏览器,但是它不再起作用了。还有谁有相同的问题吗?或者,它永远都行不通吗? 问题答案: IE不支持输入type =“ number”,但您可以使用jQueryUISpinner小部件。它非常易于使用,并且具有许多对开发人员友好的API。

  • 问题内容: 我每天都使用TimedRotatingFileHandler记录Django日志并轮换使用,但是检查日志文件,奇怪的问题是昨天的日志被截断了,今天的日志很少,昨天的日志丢失了! Django 1.4 uwsgi 1.4.9 Python 2.6 我从uwsgi开始8个django实例。setting.py是 我错过了什么?为什么旧的日志丢失了? 问题答案: 您不应该同时从多个进程登录到

  • 问题内容: 1.背景 我的Maven项目中有很多模块和子模块,并且和一切正常。我也可以毫无问题地将其部署在服务器上。 我决定遵循此Maven命名转换,我正在进行一些测试,并使用一个适当的名称。 我为根工件定义的模式是,以及为模块和子模块创建的模式是: 公司任何工件任何模块1 公司-任何工件-任何模块2-任何子模块1 公司-任何工件-任何模块2-任何子模块2 的模式是: 公司任何人工制品任何模块1-

  • 问题内容: 我有一个数据库表 mytable ,它的列 名称 为Varchar格式,列 日期 为Datetime值。我想用按日期分组的某些参数来计算名称。这是我的工作: 似乎这里的范围语法有问题,如果我这样做的话,它确实可以正确计数以’a’开头的所有字段。但是,上面的查询为n返回0,尽管应该计算包含至少一个字母的所有字段。 问题答案: 你写: 似乎这里的范围语法有问题 的确如此。MySQL的LIK