2013-08-14 3 views
2

Я использую socket.io.Some пользователи, отправляющие сообщение мне «Я не могу отправить сообщение, почему?». Я исследовал эту проблему, угадал брандмауэр или антивирусную блокировку websocket.If браузер не поддерживает websocket, socket.io автоматически переключается на xhr-опрос, нет проблем. Но если браузер поддерживает websocket, а антивирус или брандмауэр блокирует websocket, socket.io не переключается на xhr, и пользователи не могут отправлять сообщения. Как я могу решить эту проблему?Некоторые пользователи не могут подключиться к websocket

Вот протокол испытаний WebSocket пользователь

http://websocketstest.com/result/244711

поддержка WebSocket нормально, данные не получают нет.

ответ

0

Вы можете установить Socket.io использовать только XHR опрос в конфигурации:

io.configure(function() { 
    io.set("transports", ["xhr-polling"]); 
}); 

См Configuring Socket.IO в официальной документации.

+0

Нет, я не хочу XHR опроса на default.Xhr есть 5 ограничения подключений из браузера. –

0

Я обнаружил, что многие пользователи не могут успешно соединиться с socket.io. Вместо того, чтобы постоянно его диагностировать, я начал создавать свои приложения, чтобы иметь легкие резервные копии для ajax. Я могу на самом деле изменить переменную среды useSocketIO на false, и весь сайт, беседа, опрокидывание, совместное использование изображений вернутся к ajax. Это не решает основной проблемы, но спасло мне много головных болей в потерянных данных, которые не передаются.

псевдо код на клиенте

# check that I have a socket object 
if socket != null 
    # if not connected, try to reconnect 
    if !socket.connected and !socket.connecting 
    attemptResetOfSocketIO() 

    # if now connected, send socket message 
    if socket.connected or socket.connecting 
    sendSocketMessage() 
    else 
    # not connected, send via ajax 
    sendAjaxMessage() 
else 
    # no socket object, send via ajax 
    sendAjaxMessage() 
Смежные вопросы