Google app engine 谷歌应用引擎频道Hello world
我正在尝试使用通道实现从服务器到客户端的异步数据传输。我通读了下面的链接,但无法理解代码,因为它是零碎的。Google app engine 谷歌应用引擎频道Hello world,google-app-engine,Google App Engine,我正在尝试使用通道实现从服务器到客户端的异步数据传输。我通读了下面的链接,但无法理解代码,因为它是零碎的。 有人能给我指出一个更完整、更简单的代码让我理解吗?我自己终于明白了,不得不更好地理解这个理论,并找到了缺失的部分。下面是我的代码 main.py from google.appengine.api import channel import webapp2 import jinja2 import os import uuid clientID_List = [] class Main
有人能给我指出一个更完整、更简单的代码让我理解吗?我自己终于明白了,不得不更好地理解这个理论,并找到了缺失的部分。下面是我的代码 main.py
from google.appengine.api import channel
import webapp2
import jinja2
import os
import uuid
clientID_List = []
class MainHandler(webapp2.RequestHandler):
def get(self):
clientID = str(uuid.uuid4())
global clientID_List
clientID_List.append(clientID)
token = channel.create_channel(clientID)
template_values = {'token': token}
template = env.get_template('index.html')
self.response.write(template.render(template_values))
def post(self):
for item in clientID_List:
channel.send_message(str(item),"hello")
# channel.send_message(clientID, "helloWorld!")
# user = users.get_current_user()
env = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__)))
app = webapp2.WSGIApplication([('/', MainHandler)], debug=True)
index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>Channel test page</h1>
<div id="div1"></div>
<input type="button" value="mybutton" onclick="sendPostMessage()" />
<script type="text/javascript" src="/_ah/channel/jsapi"></script>
<script>
var token = "{{ token }}";
sendPostMessage = function () {
var xhr = new XMLHttpRequest();
xhr.open('POST', '/');
xhr.send();
};
onOpened = function() {
// document.write('Channel opened to the server with the token '+token + '</br>');
document.getElementById("div1").innerHTML= document.getElementById("div1").innerText + "Channel opened to the server with the token :" + token + "<br />";
};
onMessage = function(message) {
document.getElementById("div1").innerHTML= document.getElementById("div1").innerHTML + "Date recieved from Server :" + message.data+ "<br />";
};
channel = new goog.appengine.Channel(token);
socket = channel.open()
socket.onopen = onOpened;
socket.onmessage = onMessage;
socket.onerror = function(e){
document.writeln("error:"+e['description']+ '</br>');
};
socket.onclose = function(){
document.writeln("close" + '</br>');
};
</script>
</body>
</html>
通道测试页
var token=“{{token}}”;
sendPostMessage=函数(){
var xhr=new XMLHttpRequest();
xhr.open('POST','/');
xhr.send();
};
onOpened=函数(){
//document.write('使用令牌'+token+'向服务器打开的通道)';
document.getElementById(“div1”).innerHTML=document.getElementById(“div1”).innerText+“频道以令牌“+token+”
打开到服务器;
};
onMessage=函数(消息){
document.getElementById(“div1”).innerHTML=document.getElementById(“div1”).innerHTML+“从服务器接收的日期:”+message.data+“
”;
};
通道=新的goog.appengine.channel(令牌);
socket=channel.open()
socket.onopen=onOpened;
socket.onmessage=onmessage;
socket.onerror=函数(e){
document.writeln(“错误:+e['description']+'”);
};
socket.onclose=函数(){
document.writeln(“关闭“+””);
};
最好使用python。