1

我正在尝试使用 Google App Engine 的 Channel API。

JavaScript / JQuery:

$(document).ready(function(){
    alert('ready');

    $.post('/token', function(data) {
        alert('token:' + data['token']);
        openChannel( data['token'] );
    });

    $.post('/chat', function(data) {
        alert('chat:' + data['users'].length);
    });

});


onMessage = function(message) {
    alert(message);
}

onSocketError = function(error){
    alert("Error is <br/>"+error.description+" <br /> and HTML code"+error.code);
};

onSocketOpen = function() {
    // socket opened
};

onSocketClose = function() {
    alert("Socket Connection closed");
};

openChannel = function(token) {
    alert('open channel');
    var channel = new goog.appengine.Channel( token );
    var socket = channel.open();
    socket.onopen = onSocketOpen;
    socket.onmessage = onMessage;
    socket.onerror = onSocketError;
    socket.onclose = onSocketClose;
};

问题是 alert(message) 没有触发。我的代码中有什么好运的?

"\\{\\{ token \\}\\}"我对服务器端和channel = new goog.appengine.Channel('{{ token }}')javascript中的一些示例感到困惑。

它包含在什么中{{ }}

4

3 回答 3

0

请注意,token 是标识您的页面的 TOKEN KEY。首先在页面中初始化令牌,例如:

 ChannelService channelService = ChannelServiceFactory.getChannelService();
 String token = channelService.createChannel("sample");

现在

var token ="<%=token %>";// This will creaete unique identifier(some id created by google api + ur key)

channel = new goog.appengine.Channel('<%=token%>');    
    socket = channel.open();    

    socket.onopen = function () {
        var connected = true;  
        sendMessage('<b>'+userName+'</b> Logged in.');
    };

..创建这样的功能

于 2012-06-22T05:31:16.743 回答
0

在javascript中

 function onMessage(msg) 
           {
  var msg1=msg.data;
  $('textarea').val($('textarea').val()+msg1);

    }

在后端

 ChannelService channelService = ChannelServiceFactory.getChannelService();
 channelService.sendMessage(new ChannelMessage(clientid,message));
于 2013-09-10T08:41:10.147 回答
0

除了使用正确的令牌外,您的 onMessage 函数不会触发,因为当您从服务器向客户端发送消息时会发生这种情况:

channelService.sendMessage(new ChannelMessage(channelKey, "Hello World"));

您可以设置一个 XMLHttpRequest 以便从客户端与服务器端进行通信,其中可以运行之前的 java 代码,例如:

sendMessage = function(path, param) {   
    var xhr = new XMLHttpRequest();
    xhr.open('GET', 'path + '&' + param', true);
    xhr.send();
};
于 2013-02-05T15:14:09.950 回答