Socket.io, io не определен (ошибка JS)

Я только что начал с socket.io, его предоставление JS Error на странице клиента

io не определен

Как это исправить?

Ответы

Ответ 1

введите <script src="http://yournodeserver/socket.io/socket.io.js"></script> в свой код

Ответ 2

В качестве альтернативы вы можете использовать Socket.io CDN:

<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>

Ответ 3

У меня возникла такая же проблема при использовании выражения. Даже размещение сервера: порт внутри script не будет работать. После запуска сервера я сделаю сокет прослушиванием этого порта, это была ошибка, я думаю. Использование этого ниже работает отлично

var app = express();
app.set('port', process.env.PORT || 3000);
var server = http.createServer(app);
var io = require('socket.io').listen(server);
server.listen(app.get('port'));

На стороне клиента я просто включаю script

 <script src="/socket.io/socket.io.js"></script>

Ответ 4

У меня есть приложение сокета, где мой сервер (а не CDN) обслуживает socket.io.js script. Итак, в то время как Emmerman прав, говоря, что вам нужно включить тег script в свой HTML-код клиента, этот актив не будет загружен, если ваш back-end не работает. Один из вариантов - написать JS script на стороне клиента, который проверяет io, прежде чем пытаться использовать socket.io. Если он не присутствует (undefined/null), вы можете либо условно показать что-то вроде "сервер вниз", либо в моем случае, я собираюсь установить таймер, который периодически проверяет, пока сервер не будет восстановлен.

[UPDATE 2] Закончилось включение тега script, проверить существование объекта io и сделать window.location.reload() через 10 секунд (используя setTimeout) (что, в конечном итоге, будет, надеюсь что существует script и io, после чего я могу подключиться к серверу сокетов.)

[UPDATE] Я загружаю script с помощью вызова ajax, а не с помощью тега html script. Затем с помощью таймера я периодически проверяю, будет ли загружаться script - в конце концов, когда сервер будет восстановлен/перезагружен. jQuery ref для динамического загрузки JS-скриптов: http://api.jquery.com/jQuery.getScript/

Ответ 5

Оберните свой код клиента на $(document).ready() 'для jQuery или другой подобной функции библиотеки. Таким образом, вы убедитесь, что ваш код запускается после загрузки библиотеки.

Ответ 6

<script src="http://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script>

это последняя версия socket.io, которая будет включена.