我正在创建一个程序来显示统计数据。为此,我决定使用websockets和http。Websockets,因为它不需要轮询,但允许我的服务器推送任何更改(我可以为不同的解决方案提供建议),所以更新非常迅速。对于websockets,我使用websocket++库,对于http,我使用libmicrohttpd。该程序运行在Unix/Linux系统上。
现在,使用websocket++创建websockets非常简单。我让用户决定一个端口号,就是这样。对于使用libmicrohttpd的http也是如此。现在的问题是,我如何从html指向websocket服务?我只知道一个端口号(它监听所有网络接口;它绑定到0.0.0.0),而不是主机名。我试过http://:8001/ (所以没有任何主机名,也没有ip地址),但至少火狐不采用这种方式。那我该怎么解决呢?理论上,我可以让websocket++进行http处理,但是对于像图像这样的二进制文件,这是行不通的,而且它也不允许您处理头请求。
发布于 2017-11-23 21:05:56
找到了解决办法:
http请求(通常是使用chrome & firefox)是一个"Host:"-header。例如:
GET / HTTP/1.1
Host: keetweej.vanheusden.com:8000
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0因此,我现在要做的是从Host中删除主机名,并将websockets的端口号添加到其中。这行得通!
发布于 2017-11-23 17:37:04
我只知道一个端口号(它监听所有网络接口;它绑定到0.0.0.0),而不是主机名。我试过http://:8001/ (所以没有任何主机名,也没有ip地址),但至少火狐不采用这种方式。
这不可能让let浏览器在指定的端口上搜索指定的网页,因为您有超过100万个let服务器地址(您根本不知道)来搜索开放端口。因此,唯一的解决方案是在上面提到的html中提供一个url,脚本可以用来连接到您的服务。
如果要绑定到本地主机(127.0.0.1):http://localhost:8001/或http://127.0.0.1:8001/
https://stackoverflow.com/questions/47460855
复制相似问题