嘿,我正在嘗試使用socket.io與跨域。例如,假設域名是:https://client.domain.com和https://server.domain.com。我的客戶端代碼如下所示:socket.io不斷嘗試使用錯誤的地址輪詢
socket = io.connect("https://server.domain.com");
socket.on("connect", function() {
console.log("socketio Connected to server!");
});
socket.emit("test", {"test":"test"});
和服務器端:
var fs = require('fs');
var https = require('https');
var express = require('express');
var socketIO = require('socket.io');
var app = express();
// Settings
var serverOptions = {
key: fs.readFileSync('privkey1.pem'),
cert: fs.readFileSync('cert1.pem')
};
var serverPort = 443;
// Logic
var server = https.createServer(serverOptions, app);
var io = socketIO(server);
io.on('connection', function(socket) {
socket.on("test", function(data) {
console.log(data);
});
});
server.listen(serverPort, function() {
console.log('server up and running at %s port', serverPort);
});
一切正常,消息被髮送來回。但是一些reasone socket.io一直試圖使用輪詢和錯誤的域名。幾乎每一秒我都看到這些請求:
Request URL:https://client.domain.com/socket.io/?EIO=3&transport=polling&t=1452418594321-145
Request Method:GET
Status Code:302 OK
爲什麼socket.io這樣做,我該如何關閉它?
編輯:什麼更有趣的是,如果我註釋掉所有的代碼與socket.io做,只留在<script src="https://server.domain.com/socket.io/socket.io.js"></script>
它仍然不斷做出前面描述的這些HTTP請求。
EDIT2:不知道這是否會有所作爲,但實際上這些域不是一個域的子域。它們是https://clientdomain.com
和https://serverdomain.com
。
你的html是從'client.domain.com'提供的,對吧? – cviejo
無法複製此內容。在我第一次調用'io.connect'前,我也沒有看到任何請求.... – cviejo
嘗試運行具有調試信息的服務器''DEBUG = socket.io * node myapp'' –