Проблемы с подключением Socket.io 0.7.9 - PullRequest
4 голосов
/ 16 августа 2011

Я пытаюсь перейти на socket.io 0.7.9 и столкнулся с проблемами.

Я использовал базовый пример с домашней страницы socket.io.Мой сервер:

var http    = require('http'),
    url     = require('url'),
    https   = require('https'),
    fs      = require('fs'),
    crypto  = require('crypto'),
    io      = require('../'),
    sys     = require(process.binding('natives').util ? 'util' : 'sys'),
    server = http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end();
    });

server.listen(80,"[MYIP]");
var io = io.listen(server), buffer=[];

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

Он подключается нормально на некоторых компьютерах, но не на других.Это одинаково для всех браузеров.

Кто-нибудь знает, почему это произойдет?Может ли быть какая-то проблема локальной сети, которая вызывает это?

ОБНОВЛЕНИЕ Похоже, что люди, которые не могут подключиться со своих компьютеров, используют антивирус с сетевыми экранами в реальном времени, которые, кажется, блокируют соединение.Когда они выключают его, он подключается в некоторых браузерах нормально ...

1 Ответ

4 голосов
/ 08 августа 2012

Я использую socket.io и node.js в течение последних двух месяцев, и некоторые проблемы, подобные вашей, произошли и со мной.

Брандмауэры часто являются проблемой с портом 80, особенно при использовании с DNS (как в корпоративной сети), потому что они будут согласовываться с заголовками пакетов сокетов. Один из способов обойти это - попробовать другой порт. У моего приложения есть сервер apache на порту 80, а мой websocket на порту 843, все отлично работает на Firefox и Chrome.

Вы можете использовать опцию резервирования xhr-polling, чтобы обойти этот тип ошибок, добавив этот скрипт:

io.set('transports', ['websocket','xhr-polling']);

xhr-опрос обеспечивает меньшую производительность в режиме реального времени, но действительно надежен и работает в большинстве браузеров и сетевых конфигураций.

Надеюсь, это вам поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...