HTTP PUSH的Nginx方法相对简单。有3方涉及:订户(接收方),发布方(发送方),服务器本身充当组播服务器。
Nginx还可以分成不同的频道,用户可以访问不同的频道ID。
但我仍然不知道如何仅为登录用户授权/限制内容,或者只发送该用户所需的数据,而不是将其多播到任何知道频道ID的人。
如果可能,是否仍然只使用频道并有选择地向用户发送数据?
目前我在同一个数据库上运行,但发件人使用nginx在ruby中编写,前端使用PHP / GWT编写。
非常感谢
答案 0 :(得分:1)
这是我的设置: >
location = /broadcast/sub { default_type text/json; set $push_channel_id $arg_channel; push_subscriber; push_subscriber_concurrency broadcast; push_channel_group broadcast; } location = /broadcast/pub { set $push_channel_id $arg_channel; push_publisher; push_min_message_buffer_length 5; push_max_message_buffer_length 20; push_message_timeout 10s; push_channel_group broadcast; } I send new messages with curl $ch = curl_init($pub_url); $data = array('status' => $message); curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/json")); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $return = curl_exec($ch); curl_close($ch); Thanks for any hints...
答案 1 :(得分:1)
也许您可以使用我的http_push_module模块的分支,它实现了对通道的细粒度安全访问。它为通道和每个客户端IP /每通道安全性提供了到期时间(如果需要,还可以添加jsonp支持,作为加号):
https://github.com/Kronuz/nginx_http_push_module
使用该模块,您可以为您的登录用户提供有效的密钥(甚至可以过期,或者只使用FFFFFFFF作为过期日期,因此它永不过期)并且可以根据您的访问权限进行限制,甚至通过使用其中嵌入密钥的IP地址来“打开”通道。我希望这会有所帮助。