另一個更新:問題與Socket.IO與Chrome和Firefox
在本地主機上運行,以及當出現問題。因爲我想通了這個問題來自於代理服務器,這裏是它的代碼:
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天的研究,現在決定發佈這個,因爲我知道它非常模糊,我可能沒有提供足夠的信息。儘可能多地記住和列出我在此期間嘗試過的所有內容都需要很長時間。
將Chrome 10與Chrome v51.0.2704.103,Firefox v43.0.1結合使用。服務器(CentOS的)是使用節點V6.2.2與主要如下模塊:
下面是一些相關的服務器代碼:
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
})
可能是無關的,但我看到這個漂亮的一致,我不相信你應該調用'在客戶端connect'。連接回服務器的方法應該是'var client = io();' – pay
您是否嘗試過使用您發佈的最小代碼?這將有助於隔離問題。 – mscdex
@pay我已經嘗試了「連接」內部和外部的事件。不解決問題。 –