这是libwebsocket_client_connect()
的签名。
struct libwebsocket * libwebsocket_client_connect (struct libwebsocket_context * context, const char * address, int port, int ssl_connection, const char * path, const char * host, const char * origin, const char * protocol, int ietf_version_or_minus_one)
在这些参数中,我对host
和origin
的内容感到困惑。
在参数说明中,它是说
host : Hostname on server
origin : Socket origin name
似乎是服务器和客户端的域名或IP地址。
只有当我放入127.0.0.1或localhost时,它才能正常工作(因为我在localhost中测试了websocket服务器和客户端)
但如果是这样,我认为该功能已经有服务器IP或域名的地址字段,为什么它可能有重复的字段?
答案 0 :(得分:2)
主持人http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23
Host request-header字段指定Internet主机和端口 请求的资源编号,从原始编号获得 用户或引用资源(通常是HTTP URL)提供的URI。
起源https://tools.ietf.org/html/rfc6454#section-7.2
当包含在HTTP请求中时,Origin头字段指示
“引起”用户代理发出请求的原因,如下 由API定义,触发用户代理发出
请求。
主机是请求的目标,而origin是创建websocket客户端的域。例如,如果您在example1.com上有一个页面,并且该页面打开websocket到example2.com,则example1.com将成为源,example2.com将成为主机。