Проблема, с которой я столкнулся, заключалась в обслуживании клиента socket.io.js из другого места.
Эту проблему можно избежать, подав файл js клиента с того же сервера, к которому вы пытаетесь подключиться..
например, мой первоначальный код клиента был таким, и он выдавал ошибку
<script src="/socket.io/socket.io.js"></script>
var socket = io.connect('http://mydomain.com/');
, как только я изменил его, он работал нормально.
<script src="http://mydomain.com/socket.io/socket.io.js"></script>
var socket = io.connect('http://mydomain.com/');
И мой код сервера,
var express = require('express');
var app = express();
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Headers", "Content-Type");
res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
next();
});
var server = http.createServer(app);
io = socketio.listen(server, {log:false, origins:'*:*'});
... //io.connect and events below