Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling

Posted

技术标签:

【中文标题】Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling【英文标题】:Node.js and Socket.io in Phaser.js not connecting socket.io/?EIO=3&transport=polling 【发布时间】:2017-06-10 22:16:31 【问题描述】:

我能够运行我的 node.js 服务器,我的 phaser.js 游戏运行,但是当游戏运行时我没有得到“连接的”console.log。相反,我从客户端收到此错误消息:

enter image description here

socket.io-1.4.5.js:1 GET http://192.168.128.184:8080/socket.io/?EIO=3&transport=polling&t=LdMR6Ro net::ERR_CONNECTION_REFUSED

服务器:

var serverPort = 8080;

console.log("Initializing Server.");

var express = require('express');
var connect = require('connect');
var app = express();
var serv = require('http').Server(app);  //.createServer(app);
var io = require('socket.io').listen(serv);  //(serv,);

console.log("Starting Server.");

var serveStatic = require('serve-static');
connect().use(serveStatic(__dirname)).listen(serverPort, function()
    console.log('Server running on ' + serverPort + ' !');
);

app.get('/',function(req, res) 
    res.sendFile(__dirname + '/index.html');
);

serv.listen(8081);

var SOCKET_LIST = ;
io.on('connection',function(socket)  
    console.log("A user is connected");
);

io.sockets.on('connection', function(socket)
    console.log('Socket connection');
);

客户

var local = "http://" + document.location.host + ":8081";
        var socket = io().connect(local);

【问题讨论】:

【参考方案1】:

在您的客户端代码中,您使用的是io().connect(local),但是使用指定地址与您的变量进行连接的正确方法是io.connect(local)

此外,如果 document.location.host 是您用于获取页面的地址的一部分,则它会包含“:8080”,因此您需要将其删除。你可以试试document.location.host.split(':')[0]

【讨论】:

var local = "http://" + document.location.host + ":8081"; var socket = io.connect(local);好的,现在尝试:仍然没有连接 在使用io() 之前,它使用自动发现功能,因此它忽略了您传入的地址。你说没有联系?这是否意味着您遇到了类似的错误? 抱歉,客户端出现同样的错误。服务器端无console.log连接显示 相同,仍然尝试连接到 8080 或同样的错误但现在连接到 8081?如果您在连接到 8081 时遇到同样的问题,那么问题似乎并不在于您的应用程序,因为我实际上是复制+粘贴了您的代码,进行了此更改并且工作正常。您确定没有阻止此端口上的连接吗? 很确定连接没有被使用,你能在 phaser.js 中使用它吗?

以上是关于Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling的主要内容,如果未能解决你的问题,请参考以下文章

从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)

phaser小游戏框架学习

使用 Phaser.js 和 Ionic 开发游戏应用程序(缓慢/不稳定的渲染)

Phaser.js 获取给定的无效 Phaser 状态对象

从零到一:用Phaser.js写意地开发小游戏(Chapter 1 - 认识Phaser.js)

从零到一:用Phaser.js写意地开发小游戏(Chapter 1 - 认识Phaser.js)