Node.js和Socket.IO扩展Django的实时处理功能_.docx

上传人:啊飒飒 文档编号:11644587 上传时间:2021-08-27 格式:DOCX 页数:8 大小:14.63KB
返回 下载 相关 举报
Node.js和Socket.IO扩展Django的实时处理功能_.docx_第1页
第1页 / 共8页
Node.js和Socket.IO扩展Django的实时处理功能_.docx_第2页
第2页 / 共8页
Node.js和Socket.IO扩展Django的实时处理功能_.docx_第3页
第3页 / 共8页
Node.js和Socket.IO扩展Django的实时处理功能_.docx_第4页
第4页 / 共8页
Node.js和Socket.IO扩展Django的实时处理功能_.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Node.js和Socket.IO扩展Django的实时处理功能_.docx》由会员分享,可在线阅读,更多相关《Node.js和Socket.IO扩展Django的实时处理功能_.docx(8页珍藏版)》请在三一文库上搜索。

1、Node.js和Socket.IO扩展Django的实时处理功能_ 这篇文章主要介绍了用法Node.js和Socket.IO扩展Django的实时处理功能,用异步处理实时功能是相当强大的,文中给出的例子是建立一个实时谈天室,需要的伴侣可以参考下 今日,我们的目标是用法Django,Redis,和Socket.IO建立一个实时的谈天室。虽然几乎全部的Web应用程序都可以建立一个谈天室的。这篇文章将以较高的水平告诉你如何将基于REST的应用程序转换成一个实时的Web应用程序的。我会用法Django创建REST的部分,事实上自由地用法任何你舒适的语言/框架均可。接下来,让我们跳进代码,先列举我们所需

2、要的部分。 组成: Django 1.4+ Redis 2.6.x (版本可选,但是建议用法) Redis-py 2.7.x (仅当你用法Redis时需要) Node.js v0.8.x Socket.IO v0.9.x Cookie v0.0.5 数据库、sqlite、其他你觉得类似数据库形式的 均可 你的用法的版本可能与我不同,我临时未测试其他版本,全部用法当前最新稳定版本。假如你无法通过下面方法安装,我已经编译好Ubuntu的软件包。你可以从评论中得到其他操作系统版本状况。 #https:/ sudo apt-get install python-pip sudo pip install

3、 django #l html head titleRealtime Django/title meta http-equiv=Content-Type content=text/html; charset=utf-8 / script src=/ type=text/javascript/script script src= script $(document).ready(function() var socket = io.connect(localhost, port: 4000); socket.on(connect, function() console.log(connect);

4、 ); var entry_el = $(#comment); socket.on(message, function(message) /Escape HTML characters var data = message.replace(/g,).replace(/g,).replace(/g,); /Append message to the bottom of the list $(#comments).append(li + data + /li); window.scrollBy(0, 10000000000); entry_el.focus(); ); entry_el.keypr

5、ess(function(event) /When enter is pressed send input value to node server if(event.keyCode != 13) return; var msg = entry_el.attr(value); if(msg) socket.emit(send_message, msg, function(data) console.log(data); ); /Clear input value entry_el.attr(value, ); ); ); /script /head body ul id=comments %

6、for comment in comments % licomment.user: comment.text/li % endfor % /ul input type=text id=comment name=comment / /body /html 在上面我们用socket.IO在本地端口4000连接我们的节点服务。当从服务器得到了一个信息我们就在名目和添加它到我们说明列表里做了些转义,当我们想要发送一个信息我们就对输入盒子里做了相应的13(按下一个键)的按键检查。一旦那被按下后我们就发出信息给服务器使其被持有。一旦它被Django保存到我们的数据库我们就得到一个message大事将其添加

7、到我们的会话列表里 我们的Django显示我们在下一步将加载一个comments变量,因此我们那样设置并遍历下面全部的循环。这部分仅仅是当页面初始加载时用法了,我们的javascript将添加数据给这个名目作为一个新的数据来自我们的Node服务 View 打开realtime_tutorial/core/views.py,然后像我一样编辑: from core.models import Comments, User from django.shortcuts import render from django.http import HttpResponse, HttpResponseSer

8、verError from django.views.decorators.csrf import csrf_exempt from django.contrib.sessions.models import Session from django.contrib.auth.decorators import login_required import redis login_required def home(request): comments = Comments.objects.select_related().all()0:100 return render(request, ind

9、ex.html, locals() csrf_exempt def node_api(request): try: #通过sessionid获得 user session = Session.objects.get(session_key=request.POST.get(sessionid) user_id = session.get_decoded().get(_auth_user_id) user = User.objects.get(id=user_id) #创建Comment Comments.objects.create(user=user, text=request.POST.g

10、et(comment) #创建后就把它发送到谈天室 r = redis.StrictRedis(host=localhost, port=6379, db=0) r.publish(chat, user.username + : + request.POST.get(comment) return HttpResponse(Everything worked :) except Exception, e: return HttpResponseServerError(str(e) 让我们看看这里发生了什么。home是一个标准的view文件。用法select_related来获得每一个comme

11、nt的username,而不是在页面第一次加载的时候,就返回一个comment的query集合。 其次个就是我们Node app发送信息的view。我们从POST中猎取sessionid,然后通过解码获得userid。确定user存在后,就可以创建comment了。现在吧username 和 comment 发送到 Redis server。最终,把数据发送到这里叫做chat的频道。 URLs 这里比较简洁,由于我们将要用法Django自带的views和template。 from django.conf.urls import patterns, include, url urlpatter

12、ns = patterns(, url(r$, core.views.home, name=home), url(rnode_api$, core.views.node_api, name=node_api), url(rlogin/$, django.contrib.auth.views.login, template_name: admin/login.html, name=login), url(rlogout/$, django.contrib.auth.views.logout, next_page: /, name=logout), ) Start It Up! 打开servers。 python manage.py runserver localhost:3000 #In a new terminal tab cd into the nodejs directory we created earlier node chat.js 我把代码放到github。假如你想把它做得更好,就允许user创建、加入谈天室。你也可以用法PHP或者Rails开发。 更多信息请查看IT技术专栏 .

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1