Получение орбиты для работы с моим приложением Twisted

Я не могу заставить Orbited работать с моим приложением Twisted. У меня есть страница, обслуживаемая Twisted (скажем localhost:8000/page), которая включает Orbited.js с орбитального сервера (localhost:8001/static/Orbited.js). Затем у меня есть пример сервера чата TCP, работающего на порту 7777. Я пытаюсь использовать Orbited.TCPSocket для соединения с сервером чата:

conn=new Orbited.TCPSocket();
conn.open("localhost", 7777);
conn.send("test\r\n"); //error:  bad readyState

Он отлично работает, когда Orbited обслуживает страницу, но не когда Twisted обслуживает ее из другого порта. Мой orbited.cfg выглядит так:

[Слушать]
Http: //: 8001

[доступ]
* -> localhost:7777

И до того (что сработало) у меня тоже было это:

[Статические]
тест =index.html

Где index.html был другой страницей, захватившей localhost: 8001 / static / Orbited.js, и доступ к которой осуществлялся с localhost: 8001 / test.

Как мне изменить мой конфигурационный файл для работы с запросами с моего витого сайта на другой порт?

Обновить

Я попытался изменить Orbited.settings.port на 8001, прежде чем пытаться открыть соединение, но я получил ошибку: "небезопасная попытка JavaScript получить фрейм с URL-адресом http://localhost:8000/page из фрейма с URL-адресом http://localhost:8001/static/xsdrBridge.html. Домены, протоколы и порты должны совпадать."

Хм, также, я только что посмотрел на орбитальную вики, и, очевидно, установка Orbited.settings.port - это именно то, что я должен делать. но я получаю ужасные ошибки

2 ответа

Решение

Я использовал Orbited в прошлом. В целом, это работает, но есть несколько особенностей, чтобы настроить его и работать без сбоев. Кажется, что сам проект находится в состоянии изменения (похоже, он переходит на node.js). Оба эти момента заставляют меня предположить, что - если вы можете избежать этого - не использовать Orbited.

Есть ли альтернативы, которые чище? Я бы сказал, да. Вы можете в значительной степени подражать Orbited с Websockets на складе Twisted. Это будет явно работать для новых браузеров. А как насчет старых? Ну, есть проекты с открытым исходным кодом, которые обертывают веб-сокеты и возвращаются к флэш-памяти в качестве транспорта для старых браузеров. Установка работает довольно хорошо, и на самом деле чувствует себя чище, чем при использовании решения, такого как орбитальный.

Если вы посмотрите http://github.com/rlotun/txWebSocket вы найдете текущее состояние реализации веб-сокета Twisted, а также пример того, как использовать флэш-память в старых браузерах. Надеюсь, это будет достаточно полезно для вас, чтобы служить заменой Orbited.

Ты можешь позвонить send() только после того, как соединение находится в открытом состоянии.

Поставить обработчик для .onopen() и сделать .send() оттуда.

Другие вопросы по тегам