веб-сокет.js и WebSocket

#javascript #websocket

#javascript #websocket

Вопрос:

Я пытаюсь реализовать веб-сокет для браузера. Firefox, Chrome отлично работают, но когда я пытаюсь в IE, он создает объект socket, но никогда не вызывает таймер.

 WebSocket = function(url, protocol, proxyHost, proxyPort, headers) {
var self = this;
self.__id = WebSocket.__nextId  ;

WebSocket.__instances[self.__id] = self;
self.readyState = WebSocket.CONNECTING;
self.bufferedAmount = 0;
self.__events = {};

// Uses setTimeout() to make sure __createFlash() runs after the caller sets ws.onopen etc.
// Otherwise, when onopen fires immediately, onopen is called before it is set.
setTimeout(function() {
    WebSocket.__addTask(function() {
      WebSocket.__flash.create(
          self.__id, url, protocol, proxyHost || null, proxyPort || 0, headers || null);
      });
    }, 0);
};
  

В чем может быть причина?

Ответ №1:

О какой версии IE вы говорите? Какую библиотеку websocket вы используете?

Веб-сокеты не поддерживаются более старой версией IE. Я думаю, вам нужно использовать длительный опрос вместо websockets для этих старых браузеров…

Если вы используете это:https://github.com/gimite/web-socket-js Это указано в документации :

Это должно работать в: Google Chrome 4 или более поздней версии (просто использует встроенную реализацию) Firefox 3.x, 4.x, Internet Explorer 8, 9 Flash Player 10 или более поздней версии Это может работать или не работать в других браузерах, таких как Safari, Opera или IE 6. Исправления для этих браузеров приветствуются, но я не буду работать над устранением проблем, специфичных для этих браузеров, самостоятельно.

Комментарии:

1. спасибо, я использую IE8 flash Player 10.2. В идеале эта функция внутри setTimeout должна была быть вызвана, когда я ставлю точку останова, она не попадает !

2. я думаю, что я приближаюсь к этому. Я предполагаю, что JS вызывает flash, чтобы предоставить ему действительный WebSocket, и flash запрашивает IP-адрес моего сервера websocket на порту 846 для файла политики. Поскольку он этого не получает, он не получает действительный объект WebSocket. есть ли какой-нибудь пример, как передать этот файл политики во flash?

3. Взгляните сюда: lightsphere.com/dev/articles/flash_socket_policy.html

4. я написал простую программу для прослушивания порта 843, чтобы увидеть, что поступает от клиента, я даже не получил соединение! как выполнить отладку в отладочной версии flash Player?