Hei, tôi đang cố gắng sử dụng socket.io với các tên miền chéo. Ví dụ: giả sử tên miền là: https://client.domain.com và https://server.domain.com. mã phía khách hàng của tôi trông như thế này:socket.io liên tục cố gắng sử dụng bỏ phiếu sai địa chỉ
socket = io.connect("https://server.domain.com");
socket.on("connect", function() {
console.log("socketio Connected to server!");
});
socket.emit("test", {"test":"test"});
Và phía máy chủ:
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);
});
Mọi thứ hoạt động, các thông điệp được gửi qua lại. Nhưng một số socket.io reasone tiếp tục cố gắng sử dụng bỏ phiếu và trên miền sai. Hầu hết các giây tôi thấy các yêu cầu sau:
Request URL:https://client.domain.com/socket.io/?EIO=3&transport=polling&t=1452418594321-145
Request Method:GET
Status Code:302 OK
Tại sao socket.io làm điều đó và làm cách nào tôi có thể tắt tính năng này?
EDIT: điều thú vị hơn là nếu tôi nhận xét tất cả các mã để làm với socket.io và chỉ để lại trong <script src="https://server.domain.com/socket.io/socket.io.js"></script>
nó vẫn tiếp tục thực hiện các yêu cầu HTTP được mô tả trước đó.
EDIT2: Không chắc chắn nếu điều này sẽ tạo ra bất kỳ sự khác biệt nào nhưng trên thực tế, các tên miền không phải là tên miền phụ của một miền. Chúng là https://clientdomain.com
và https://serverdomain.com
.
html của bạn đang được phân phối từ 'client.domain.com', phải không? – cviejo
Không thể sao chép điều này. Tôi cũng không thấy bất kỳ yêu cầu nào cả trước khi tôi lần đầu tiên gọi 'io.connect' .... – cviejo
cố gắng chạy máy chủ với thông tin gỡ lỗi '' DEBUG = socket.io * node myapp'' –