当前位置: 首页 > 知识库问答 >
问题:

插座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" );

我从node _ modules/socket . io/node _ modules/socket . io-client/socket . io . js获得了客户端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

服务器。js是我开始套接字的地方。服务器端的io。服务器。js文件夹中的js是从网站连接的客户端代码。

共有3个答案

段宏毅
2023-03-14

只是为了检查这是你的服务器还是客户端问题,你可以使用这个web:websocket echo,如果这个客户端直接连接到你的服务器(如果你的服务器在线,如果在你的主机上,从websocket.org cuoting。。。

使用文本编辑器,复制以下代码并将其另存为 websocket.html在硬盘驱动器上的某个位置

代码:网络套接字测试

我能观察到的唯一与我不同的是io客户端源代码:

在您的服务器上,您应该尝试以下方式:

var express = require('express'), 
app = express(),
http = require('http'),
server = http.createServer(app),
io = require('socket.io').listen(server),
exec = require('child_process').exec,
util = require('util');

//serve our code
app.use(express.static('public'));
app.use(express.json());
app.use(express.urlencoded());
//listening on connections

io.on('connection', function (socket) {
    console.log('client connected!'); 
}
server.listen(8080);

请注意,这种方式适用于此依赖项:我建议您将以下代码添加到您的 package.json 文件中:

"dependencies": {
    "express": "3.x.x",
    "socket.io": "*",
    "util": "*"
  }

干杯

宰父衡
2023-03-14

在我的例子中,我用Express应用程序生成器创建了我的应用程序。要解决此问题,请不要编辑应用程序。js文件,我在定义服务器后编辑了bin/www文件

/**
 * Create HTTP server.
 */

var server = http.createServer(app);
var io = require('socket.io')(server); // Add this here

使现代化

我在这里找到了更好的方法Express Generator和Socket.io

鱼安然
2023-03-14

它看起来像插座。IO无法拦截以< code>/socket.io/开头的请求。这是因为在您的情况下,侦听器是< code>app -一个快速处理程序。您必须使< code>http成为侦听器,以便套接字。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设置服务器,但结果不佳。 我主要遵循此指南,尽管它有些过时了:http : //www.williammora.com/2013/03/nodejs-tutorial- building-chatroom-with.html 问题来自socket.io,我不确定是客户端还是服务器端。似乎正在尝试不断轮询服务器,但又找回了404。听起来好像socket.i

  • 我正在开发一个在线的,基于文本的RPG(Github);目前我有一个PHP后端,它将会话数据存储在redis服务器中。对于需要实时通信的所有内容(聊天,消息传递和连接用户列表),我使用Node.js和 socket.io 用于websocket。 我目前在我的网络索克服务器上有3个命名空间: 消息服务器 在线服务器 聊天服务器 我已经让它工作了,但恐怕大部分是由“黑客”制作的。现在,我无法向特定的

  • 我有一个节点。js服务器使用socket。io和Android应用程序。我希望我的应用程序连接到服务器。(我在当地工作) 首先我启动服务器:命令提示符 以下是代码: 然后我试着从这里的活动中联系起来: 我的问题是,我从来没有在服务器上看到“一个用户连接”的日志,但我总是在android日志上看到“尝试连接”和“连接成功”。 有人能帮我解开这个谜团吗? 使现代化 我的代码工作正常,但我遇到了一些Wi

  • 我用的是插座。io和laravel echo服务器上安装了Redis和SSL,但未安装套接字。io文件没有加载到生产ubuntu服务器上。在我的本地窗口中一切正常。我不确定生产是否需要任何其他配置。我还允许UFW 6001端口。 这是我的laravel-echo-server.json档案。 } 我在不同的门户网站上搜索,并得到一些帮助,我应用了以下一些东西。 允许ufw端口6001 运行命令la

  • 我正在努力正确配置nginx,以确保它可以处理Express(端口8081)和Socket的代理。io(端口3000)。下面是我的配置,它当前为整个请求(不仅仅是Socket.io)产生了502错误: 据我所知,我需要确保Socket使用的Websocket。io已升级到HTTP,但这正是我努力掌握自己需要做什么的地方。可能是两个插座。io和Express需要在不同的端口上运行,然后需要根据我上面

  • 我有nodejsexpress项目。我正在实现套接字。io用于聊天应用程序。要检查Socket连接,我正在使用此工具。https://amritb.github.io/socketio-client-tool/ 这是我的服务器代码。 我使用上述工具检查了连接。像 http://localhost:3000,并连接插座。但是当我在服务器中检查它时,它不起作用。 我在服务器中使用ngnix服务器并映射