跳转到主要内容

通过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 Kovalsockjs-tornado 上的出色工作,该库提供了大量的示例和文档,可能对您有所帮助。例如,它列出了一个样本 HAProxy 配置,当您的项目上线时可能需要它,因为您不能继续在生产系统上暴露端口 9999。

项目详情


发布历史 发布通知 | RSS 源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源代码分发

django-sockjs-tornado-0.0.1.tar.gz (5.3 kB 查看散列值)

上传时间 源代码

支持