使用Chrome和Firefox的Socket.IO问题

时间:2016-08-03 19:22:45

标签: node.js google-chrome firefox express socket.io

另一次更新:

在localhost上运行时也会出现问题。由于我发现问题来自代理服务器,所以这里的代码是:

var serverBouncer = bouncy(function(req, res, bounce) {
    var path = req.url;
    var url = req.headers.host;
    if (typeof url !== "string")
        return;
    var urlArray = url.split('.');
    var bouncePort = port;
    if (!isNaN(urlArray[0]))
        bouncePort = parseInt(urlArray[0]);
    else if (String(urlArray[0]).toLowerCase() === "www" && !isNaN(urlArray[1]))
        bouncePort = parseInt(urlArray[1]);
    bounce(bouncePort);
});
serverBouncer.listen(80);

更新:

我发现问题来自哪里!!!但是我仍然需要找到解决方案...使用代理服务器(在我的情况下是有弹性的)使用较新版本的Socket.io(> = 1.0)时似乎存在问题。

我最近更新了Socket.IO从v0.9.16到v1.4.5,以及将Express添加到组合中。但是,现在我无法在Chrome和Firefox中打开多个(数量似乎有所不同)标签而不会遇到奇怪的问题(Edge是唯一一个运行良好的标签)。它会挂起,或者在挂起之前部分加载html和其他资源。

等待后,我经常收到错误:     无法加载资源:服务器响应状态为400(错误请求)

当我关闭其中一个悬挂的标签时,它会解锁其他悬挂的标签。

在完成上述更改之前,问题并未出现。

我已经做了整整2天的研究,现在决定发布这个,因为我知道这很模糊,而且我可能没有提供足够的信息。尽管如此,我还需要很长时间才能记住并列出我在那段时间尝试的所有内容。

将Windows 10与Chrome v51.0.2704.103,Firefox v43.0.1配合使用。服务器(CentOS)使用节点v6.2.2,主要以下模块:

  • express@4.14.0
  • npm@3.9.5
  • socket.io@1.4.5

这里有一些相关的服务器代码:

var port = 8502;    
var socketio = require('socket.io');
var express = require("express");
var http = require('http');
var app = express();
var server = http.createServer(app);
var io = socketio.listen(server);

server.listen(port);

app.get('/', function(req, res, next) {
  //Returning index.html
});

io.on("connection", function(socket) {
    //Some events...
});

这里有一些客户端代码:

var client = io.connect();

client.on('connect', function() {
  //Some events
})

2 个答案:

答案 0 :(得分:0)

在服务器收听之前你的绑定,尝试类似这样的

var app = express();
server = app.listen(PORT, function () {
    console.log('Example app listening on port ' + PORT + '!');
});

io.listen(server);

答案 1 :(得分:0)

我设法用nginx替换弹性模块。请参阅我的其他问题以获得解决方案。

nginx : redirect to port according to domain prefix (dynamically)