欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

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

    • 资源ID:11644587       资源大小:14.63KB        全文页数:8页
    • 资源格式: DOCX        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    Node.js和Socket.IO扩展Django的实时处理功能_ 这篇文章主要介绍了用法Node.js和Socket.IO扩展Django的实时处理功能,用异步处理实时功能是相当强大的,文中给出的例子是建立一个实时谈天室,需要的伴侣可以参考下 今日,我们的目标是用法Django,Redis,和Socket.IO建立一个实时的谈天室。虽然几乎全部的Web应用程序都可以建立一个谈天室的。这篇文章将以较高的水平告诉你如何将基于REST的应用程序转换成一个实时的Web应用程序的。我会用法Django创建REST的部分,事实上自由地用法任何你舒适的语言/框架均可。接下来,让我们跳进代码,先列举我们所需要的部分。 组成: 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:/docs.djangoproject.com/en/dev/topics/install/ sudo apt-get install python-pip sudo pip install django #l html head titleRealtime Django/title meta http-equiv="Content-Type" content="text/html; charset=utf-8" / script src="/ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"/script script src=" script $(document).ready(function() var socket = io.connect(localhost, port: 4000); socket.on(connect, function() console.log("connect"); ); 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.keypress(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" % 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"大事将其添加到我们的会话列表里 我们的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, HttpResponseServerError 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, index.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.get(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来获得每一个comment的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 urlpatterns = 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技术专栏 .

    注意事项

    本文(Node.js和Socket.IO扩展Django的实时处理功能_.docx)为本站会员(啊飒飒)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开