注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

郁夫的博客

我爱你们,只是你们不知道!

 
 
 

日志

 
 
 
 

用Django, Orbited, Stomp 來完成Server Push 功能 - 转  

2012-01-04 14:10:10|  分类: Django |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
用Django, Orbited, Stomp 來完成Server Push 功能
現行的ajax大多都是需client有事情,才發request對server,拿資料做事。
如果換成server有事想通知web client呢?
用Django + Orbited + Stomp 就可以完成了。
Orbited : 很神奇的東西,用javascrip+html提供了socket的功能,所以在這socket上就可以實作各種東西。
等等會把stomp client和這在browser端整合。
Stomp:只要有stompclient,就可以接收stomp broker的message了。
首先進行安裝
easy_install install orbited
easy_install install stomp.py
在django project的目錄下,加上個orbited.cnf,內容是
[listen]
http://:9000
stomp://:61613
[access]
* -> localhost:61613
[global]
session.ping_interval = 300
把orbited跑起來
orbited -c orbited.cnf
在someapp/view.py下新增如下
from django.shortcuts import render_to_response
import stomp
conn = stomp.Connection()
conn.start()
conn.connect()
def index:
return render_to_response('index.html', {'dummy': "stupid"})
def stepEventHub(request):
conn.send(json.dumps({"msg":"server"}), destination="/EventHub")
return HttpResponse("ok")
記得去編輯一下urls.py
urlpatterns = patterns('someapp.views',
(r'^index/$', 'index'),
(r'^stepEventHub/$', 'stepEventHub'),
)
然後再編輯index.html一下網頁加上下列script
// set the orbited settings and port Orbited.settings.port = 9000; Orbited.settings.hostname = "127.0.0.1"; //Orbited.settings.streaming = false; TCPSocket = Orbited.TCPSocket
function main(){
stomp = new STOMPClient();
stomp.onopen = function(){
console.log("Open Stomp Client");
}
stomp.onclose = function(c){
alert("Lost connection, Code:"+c);
}
stomp.onerror = function(error){
alert("Error : " + error);
}
stomp.onerrorframe = function(frame){
alert("Error : " + frame.body);
}
stomp.onconnectedframe = function(){
console.log("Connected. Subcribing");
stomp.subscribe("/EventHub");
}
stomp.onmessageframe = function(frame){
var data = $.parseJSON(frame.body);
alert(data['msg']);
}
stomp.connect("localhost", 61613);
};
$(document).ready(main);
下載Orbited.js&stomp.js
stomp.js在protocol下。
最後說明一下stompclient 內容
onopen – 連線開始時候要呼叫的
onclose –連線結束時候要呼叫的
onerror – 當stompclinet有錯誤時呼叫
onerrorframe – 如果有錯誤的frame抵達時呼叫
onconnectedframe – 當client成功傳送以及接收frame時
onmessageframe – 當收到一個frame時
reset – 重設連線
connect – 連到stomp server
記得frame過來後,json是在body中,所以要用$.parseJSON(frame.body)才可以。
最後先打開網頁http://127.0.0.1:8000/someapp/
再開另外一個網頁http://127.0.0.1:8000/someapp/stepEventHub
就會在第一個網頁看到alert message了。
這裡有詳細範例
  评论这张
 
阅读(1100)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017