通过Tornado在Django中运行SockJS服务器变得简单。
项目描述
通过Tornado在Django中运行SockJS服务器变得简单。
这个包基本上是sockjs-tornado的一个薄包装,使得在基于sockjs Websocket模拟库的WebSocket应用变得极其简单。
使用这个包装,你基本上可以访问Django项目中所需的所有其他内容,比如你的模型和不同的设置。
因为你需要运行两个进程(一个用于 runserver(或 wsgi)和一个用于 socketserver),这意味着这两个确实是独立的Python进程,所以你无法轻松地进行注册信号并在一个进程中触发它们,然后在另一个进程中执行。
入门
在某个地方创建一个类似这样的类
from sockjs.tornado import SockJSConnection class MyConnection(SockJSConnection): def on_open(self, request): pass def on_message(self, message): pass def on_close(self): pass
接下来,你需要将此位置的设置放入你的 settings.py 中,如下所示
SOCKJS_CLASSES = ( 'myproject.myapp.myfile.MyConnection', )
接下来,要启动服务器,只需运行
python manage.py socketserver [--help]
你仍将在另一个终端中有你的常规Django服务器
python manage.py runserver
现在你应该可以使用 sockjs-client 编写JavaScript了。你可以从CDN下载最新压缩版本。
一个简单的应用可能看起来像这样
sock = new SockJS('http://localhost:9999/echo'); sock.onmessage = function(e) { console.log(e.data); }; sock.onclose = function() { console.log('closed :('); }; sock.onopen = function() { console.log('opened :>'); letTheMadnessBegin(); }; function letTheMadnessBegin() { // silly, but you get the idea sock.send(JSON.stringify({ name: $('#name').text(), message: $('input').val() })); }
变得复杂
当然,你可以用这个做更多的事情。例如,你可能想要添加某种形式的身份验证。由于 on_open 处理器接收一个请求,你可以使用它来请求 request.get_cookie(),这留给读者作为练习。
这个包中包含了一个稍微复杂一点的例子,可能给你一些灵感。它是一个完全工作的聊天应用,只需运行即可。
本软件包主要基于 Serve Koval 在 sockjs-tornado 上的出色工作,该库提供了大量的示例和文档,可能对您有所帮助。例如,它列出了一个样本 HAProxy 配置,当您的项目上线时可能需要它,因为您不能继续在生产系统上暴露端口 9999。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源代码分发
django-sockjs-tornado-0.0.1.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | c4497191e3e130eaceff8aadcba473e219035192e7ae2320f034219e5c959413 |
|
MD5 | e125a657ef8a157b1347c2026b7efca8 |
|
BLAKE2b-256 | ea31c2a9346df07fe5516fe1a1c4bc325cc88468b4ff1d387fd8fdff2e5a928f |