更新 :感谢您的帮助。我刚刚测试了从浏览器直接连接到它的程序,而不是通过XMLHttpRequest。直接从浏览器直接运行完美。
但是,必须通过XMLHTTPRequest处理此连接。根据FireBug,它正在接收完整的响应(在这种情况下为31个字节)。它关闭连接,将readyState设置为4.但是responseText完全为空。
我正在创建一个接受连接并响应的C ++应用程序,就像它是HTTP服务器一样。我的目标是通过打开与此C ++应用程序的连接来创建实时聊天服务器,并使用在发送新消息时继续加载的“页面”进行响应。我目前正在发送以下内容:
HTTP / 1.1 200 OK \ r \ n
Transfer-Encoding:chunked \ r \ n
内容类型:text / plain \ r \ n
\ r \ n
到目前为止,一切正常。使用FireBug,我可以看到它正确地接收和解释标题。但是,我无法弄清楚如何转发响应文本。我知道在纯文本中,它将如下所示:
5
你好
8
再见
但是我尝试过的每次迭代(使用\ r \ n,没有\ r \ n,将\ r \ n计算为2个额外字节)到目前为止都没有被浏览器正确读取为响应文本。有人可以帮助制作一个合适的字符串作为响应文本发送吗?
答案 0 :(得分:1)
您应该使用零长度块结束传输:
5
Hello
8
Good bye
0
否则浏览器不知道你已经完成了。
答案 1 :(得分:1)
你正试图实现“HTTP推送”或HTTP流媒体或其他什么,问题是并非所有浏览器都能正确支持这一点,对于像firefox / opera等浏览器,你可以试试mime-type {{1所以,只要你保持连接直播并发送东西,firefox就应该阅读,但这在IE中不起作用...
答案 2 :(得分:0)
你是否使用十六进制长度?块长度之后的\ r \ n不应计入长度。
另外,尝试关闭0长度的页面。如果浏览器在解析之前只是缓冲,那将告诉您。