2014-10-12 3 views
0

У меня возникли проблемы с подключением к socket.io. С приведенным ниже кодом я продолжаю получать ошибку «io не определен» на моей консоли браузера. Кто-нибудь знает, что я здесь делаю неправильно? Я ковыряться StackOverflow в течение нескольких часов, но никакого решения не похоже на работу ...Узел + Socket.io Проблема подключения

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

,db = require("../../lib/db") 
,config = require("../../config") 
,app = require("../index") 
,io = require('socket.io')(app); 
; 
io.on('connection', function (socket) { 
    console.log('connected') 
}); 

exports.render = function(req, res){ 
    console.log(io) 
    res.render("vitron", {}); 
} 

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

<!doctype html> 
<html> 
<head> 
<title>Sockets</title> 
<script src="/socket.io/socket.io.js"></script> 
<script> 
var socket = io.connect('http://localhost'); 
socket.on('news', function (data) { 
console.log(data); 
socket.emit('my other event', { my: 'data' }); 
}); 
</script> 
</head> 
<body> 
</body> 
</html> 
+0

Проверьте журналы ошибок браузера так увидеть, если есть ошибка загрузки '/socket.io/socket.io.js'. Если есть, то проблема заключается в том, что на вашей стороне инициализации 'socket.io' отсутствует запрос промежуточного программного обеспечения, который будет запрашивать файл socket.io.js клиенту по запросу. Он не подается автоматически, если вы не выполняете правильную инициализацию промежуточного программного обеспечения. В файле socket.io есть множество примеров инициализации. – jfriend00

+0

Спасибо за помощь! У меня есть следующая ошибка: GET http: // localhost: 4602/socket.io/socket.io.js Извините за мое невежество, но о каком вызове промежуточного программного обеспечения вы имеете в виду? – austin809

+0

Это говорит о том, что у вас нет правильной инициализации на стороне сервера, поэтому ваш сервер приложений автоматически обслуживает файл '/ socket.io/socket.io.js'. – jfriend00

ответ

0

Вы, видимо, не имеют правильную инициализацию на стороне сервера, чтобы ваш сервер автоматически обслуживал файл /socket.io/socket.io.js.

Существует много способов сделать это, но самый простой способ, описанный в документации socket.io, заключается в использовании некоторого встроенного промежуточного программного обеспечения, которое будет иметь библиотеку на стороне сервера socket.io, автоматически перехватывая запрос на /socket.io/socket.io.js и обслуживать файл сценария.

В документации на socket.io показано, как это сделать при использовании express с узлом. Если вы не используете экспресс, вы можете сделать это с помощью своего собственного промежуточного программного обеспечения. Или, если вы просто используете простой узел, вам придется либо обрабатывать этот маршрут самостоятельно, либо просто поместить файл /socket.io/socket.io.js в известное местоположение, из которого он может быть запрошен напрямую. Вы даже можете ссылаться на него на CDN, если хотите, но есть преимущество в использовании встроенной схемы, потому что, когда вы обновляете библиотеку socket.io на сервере, она автоматически будет содержать соответствующую клиентскую библиотеку который является добрым.

Я не знаю точно, что ваша общая установка, но вот мой инициализации socket.io экспресс 4.

var express = require('express'); 
var app = express(); 
var server = app.listen(8081, function() { 
    console.log(new Date().toISOString() + ": server started on port 8081"); 
}); 
var io = require('socket.io').listen(server); 
Смежные вопросы