【发布时间】:2011-05-20 19:38:13
【问题描述】:
websockets 有趣的部分是从服务器向浏览器发送基本上未经请求的内容,对吗?
好吧,我正在使用 Gregor Müllegger 的 django-websocket。这是使 websockets 在 Django 中工作的一个非常好的早期破解。
我已经完成了“hello world”。其工作方式是:当请求是 websocket 时,将一个对象 websocket 附加到请求对象。因此,在解释 websocket 的视图中,我可以执行以下操作:
request.websocket.send('We are the knights who say ni!')
效果很好。我像魅力一样在浏览器中收到消息。
但是如果我想在根本不从浏览器发出请求的情况下这样做呢?
好的,首先我将 websocket 保存在会话字典中:
request.session['websocket'] = request.websocket
然后,在 shell 中,我通过会话密钥获取会话。果然,会话字典中有一个websocket对象。快乐!
但是,当我尝试这样做时:
>>> session.get_decoded()['websocket'].send('With a herring!')
我明白了:
Traceback (most recent call last):
File "<console>", line 1, in <module>
error: [Errno 9] Bad file descriptor
伤心。 :-(
好的,所以我对套接字知之甚少,但我知道的足以在调试器中四处嗅探,瞧瞧,我看到调试器中的套接字(它与真正的 websocket 绑定请求)具有 fd=6,而我从会话保存的 websocket 中获取的具有 fd=-1。
有面向套接字的人可以帮我解决这些问题吗?
【问题讨论】:
-
@EliCourtwright 你还没有奖励赏金..
-
@paddila:是的,即使您提供开放赏金的原因是“一个或多个答案具有示范性,值得额外赏金”,它也会让您等待 24 小时。只要系统允许,我就会奖励赏金。
标签: python django sockets websocket