2015-08-27 2 views
0

Я использую Socket.io 1.3.6 и express 4.13.1.Socket.IO не работает с Express

Я последовал примеру для экспресс 3/4 на Socket.io сайте: http://socket.io/docs/#using-with-express-3/4

На стороне сервера:

18 /** 
19 * Create HTTP server. 
20 */ 
21 
22 var server = http.createServer(app); 
23 var io = require('socket.io')(server); 
24 io.on('connection', function(socket) { 
25 console.log(JSON.stringify(socket)); 
26 }); 
27 
28 
29 /** 
30 * Listen on provided port, on all network interfaces. 
31 */ 
32 
33 server.listen(port); 

На стороне клиента:

42 socket = io.connect(ChartServiceFrontConfig.socketHost, ChartServiceFrontConfig.socketPort); 
43 
44 socket.on('data', function(data) { 
45  // render data 
46  var chart = charts[data.name]; 
47  if (chart !== undefined) 
48  chart.series = data.series; 
49 }); 

Экспресс просто говорит следующее 404 сообщение:

GET /engine.io/?EIO=3&transport=polling&t=1440667610196-0 404 2.172 ms - 925 
GET /engine.io/?EIO=3&transport=polling&t=1440667611046-1 404 2.627 ms - 925 
GET /engine.io/?EIO=3&transport=polling&t=1440667612854-2 404 6.672 ms - 925 
GET /engine.io/?EIO=3&transport=polling&t=1440667615955-3 404 6.362 ms - 925 
GET /engine.io/?EIO=3&transport=polling&t=1440667620537-4 404 2.340 ms - 925 

Похоже, что Express получил этот запрос, но socket.io не интерпретирует запросы с http-сервера. Я попытался следующий код не повезло ...:

var io = require('socket.io').listen(server); 

Я искал вокруг, но нет ответа работал для меня. Поэтому я застрял здесь. Любые комментарии?

+1

FYI, ваш код здесь вообще не используется. Это общий пример HTTP-сервера. – jfriend00

+0

Ваш клиент использует 'engine.io', но ваш сервер использует' socket.io'? – robertklep

+0

Этот объект приложения является экземпляром Express: var app = express(); @ jfriend00 – xiedidan

ответ

0

Проблема решена путем изменения боковой линии # 42 клиента в моем вопросе. Socket.IO клиент не принимает 2 параметра, так что просто использовать:

socket = io.connect(ChartServiceFrontConfig.socketHost 
    + ':' 
    + ChartServiceFrontConfig.socketPort); 

Теперь Socket.io соединяется.

Смежные вопросы