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;
};

問題は、アラート (メッセージ) が発火しないことです。私のコードで幸運とは何ですか?

"\\{\\{ token \\}\\}"サーバー側とchannel = new goog.appengine.Channel('{{ token }}')javascriptにあるいくつかの例で混乱しています。

それは何に囲まれてい{{ }}ますか?

4

3 に答える 3

0

トークンはページを識別するトークンキーであることに注意してください。次のように、最初にページでトークンを初期化します。

 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

正しいトークンを使用する以外に、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 に答える