Получение орбиты для работы с моим приложением 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()
оттуда.