使在Django通过Tornado运行Sockjs服务器变得容易

django-sockjs-tornado的Python项目详细描述


使在Django通过Tornado轻松运行SockJS服务器

这个包基本上是sockjs-tornado上的一个薄包装,这使得它非常简单 在sockjs Websocket emulation library之上编写基于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你可以 首先下载latest minified version from the 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()
  }));
}

想入非非

当然,你还可以做很多事情。为了 例如,您可能需要添加某种形式的身份验证。自从 打开处理程序收到一个请求,您可以使用该请求来请求 请求.获取cookie()作为练习留给读者

下面的这个包中包含了一个更为奇特的示例 可能会给你一些想法的例子这是一个完全有效的聊天 只起作用的应用程序。

这个包主要基于Serve Kovalsockjs-tornado上的惊人工作,它有很多 可能有助于您的示例和文档。例如,它列出 一个你可能需要的单反配置样本 您的项目正在运行,因为您无法继续在 生产系统

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
实现接口方法时不允许java@Override   使用BuffereImage加载映像时java高ram使用率   java For循环混乱,为什么不是循环?   java Android网格视图字符串对齐问题   java如何将方法与比较类型的附加功能进行比较?   在Java Swing中放置JSepator后的间隙大小   java如何避免并发访问我的网站中的支付链接   java如何从现有的Unix服务器连接到FTP服务器?   Spring中的java用户相关bean定义   带有scribesjava库的wordpress Woocommerce REST API返回消费者密钥参数缺失错误消息   java我可以自动检测特定设备连接的串行端口吗?   Javafx棋盘游戏   java使用JTextPane显示HTML,支持SVG吗?   SpringBoot如何在java中将映射转换为实体对象?   如何使用java代码对xls文件进行密码保护   Java JPA(EclipseLink)如何在持久化实际实体之前接收下一个生成的值?   Javaservlet启动外部进程