我似乎无法让Orbited使用我的Twisted应用程序。我有一个页面,由Twisted(比如localhost:8000 /页面)提供,其中包括来自轨道服务器的Orbited.js(localhost:8001 / static / Orbited.js)。然后我在端口7777上运行TCP聊天服务器示例。我尝试使用Orbited.TCPSocket连接到聊天服务器:
conn=new Orbited.TCPSocket();
conn.open("localhost", 7777);
conn.send("test\r\n"); //error: bad readyState
当Orbited正在为页面提供服务时,它可以正常工作,但是当扭曲从不同的端口提供时,它不会正常工作。我的orbited.cfg看起来像这样:
[listen] http://:8001 [access] * -> localhost:7777
之前(有效)我也有这个:
[static] test=index.html
其中index.html是另一个抓取localhost的页面:8001 / static / Orbited.js,并且是从localhost:8001 / test访问的。
如何更改配置文件以处理来自其他端口上的扭曲网站的请求?
我尝试在尝试打开连接之前将Orbited.settings.port更改为8001,但我收到错误消息:“不安全的javascript尝试使用网址http://localhost:8000/page从具有网址http://localhost:8001/static/xsdrBridge.html#1的框架访问框架。域,协议和端口必须匹配。“
嗯,同样,我只是看着轨道的维基,显然,设置Orbited.settings.port 正是我应该做的事情。但我得到了可怕的错误答案 0 :(得分:4)
只有在连接处于打开状态后才能调用send()
。
为.onopen()
添加处理程序并从那里执行.send()
。
答案 1 :(得分:1)
我过去曾使用过Orbited。它一般工作,但有几个怪癖,以使其设置和运行顺利。项目本身似乎处于不稳定状态(似乎正在转向node.js)。这两点都促使我建议 - 如果你可以避免它 - 不使用Orbited。
是否有更清洁的替代品?我会说,是的。您可以使用Twisted库存的Websockets模拟Orbited。这显然适用于较新的浏览器。那些旧的呢?好吧,有一些开源项目可以包装websockets并作为旧浏览器的传输回退到flash。设置工作得很好,实际上感觉比使用像轨道运行的解决方案更清晰。
如果你查看http://github.com/rlotun/txWebSocket,你会发现Twisted的websocket实现的当前状态,以及如何在旧浏览器上回退到闪存的示例。希望这对你来说可以作为Orbited的替代品。