#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?