我已经按照本教程:http://www.stephendiehl.com/?p=309描述了如何在nginx前端后面使用socketio运行一个为Django提供服务的gevent pywsgi服务器。
正如本教程所说,除非使用tcp代理模块,否则Nginx不支持websocket。此代理模块不支持使用相同的端口进行socketio和经典服务,从我理解的配置看起来如下:
nginx侦听端口80
nginx tcp代理侦听端口7000
所有内容都转发到端口8000
问题:生成的socketio请求不包含包含会话ID的django cookie,所以我在django视图中没有关于请求用户的信息。
我猜这是因为请求发送到另一个端口(7000)导致浏览器将请求标识为跨域?
将django cookie包含在请求中最简洁的方法是什么?
答案 0 :(得分:1)
this question中的大多数答案似乎表明端口无关紧要。
同时检查并假设WebSockets被视为HTTP,因此仍应发送HTTPOnly cookie。
SocketIO似乎正在使用自定义会话管理器来跟踪用户。也许尝试将其链接起来?