我正在尝试使用XPCOM在Firefox上用Javascript编写一个小型服务器+客户端。
要在Javascript中获取HTTP消息,我使用的是nsIScriptableInputStream接口。 通过read()方法的这个组件随机剪切了消息,我无法使其可靠。
有人知道可靠获取信息的解决方案吗? (我已经尝试了二进制流,同样的失败。)
学家
答案 0 :(得分:1)
我遇到了与不可靠性相同的问题......我最终使用了XMLHTTPRequest,当从XPCOM组件使用时,它可以执行跨站点请求。 docs的第二部分详细说明了如何实例化XPCOM版本。
如果您正在寻求提供HTTP请求,我将查看POW源代码和server sockets的使用,它在JavaScript中实现了一个基本的HTTP服务器。另请查看httpd.js
答案 1 :(得分:0)
如果您控制协议(即客户端和服务器),我强烈建议您使用Javascript / JSON来处理服务器到客户端的消息。客户端可以通过动态添加< script>来打开流。标记到DOM。然后,服务器可以发送一个Javascript命令流,如:
receiveMsg({type:"text", content:"this is my message"});
然后客户端只需要定义一个receiveMsg函数。这允许您依靠快速浏览器代码来解析消息并确定每条消息的结束位置,此时它将为您调用处理程序。
即使您正在使用现有的HTTP协议并且无法使用JSON,是否有某些原因您无法使用XMLHttpRequest?我希望它比一些记录不完整的特定于Firefox的XPCOM界面更稳定。
- 欺骗专家