2012-06-04 1 views
1

Google App Engine의 채널 API를 사용하려고합니다.onmessage Google App Engine (Java) 채널 API

자바 스크립트/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 }}')이있는 몇 가지 예제에서 혼란스러워합니다.

{{ }}으로 묶인 것은 무엇입니까?

+0

예제에서 자바 스크립트의 '{{token token}'식별자는 template.render 함수 서버 측에 의해 값으로 확장되는 것을 의미합니다. '/ token'핸들러에서 무슨 일이 일어나고 있습니까? –

답변

0

토큰은 페이지를 식별하는 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.'); 
    }; 

.. 올바른 토큰을 사용하여 외에도이

0

같은 함수를 작성, 실행되지 않는의 onMessage 함수는이 때 발생하는 것이기 때문에 서버에서 클라이언트로 메시지를 보냅니다.

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

예를 들어, 자바 코드 이전에 실행할 수있는 서버 측, 클라이언트에서 통신하기 위해 XMLHttpRequest의 :

sendMessage = function(path, param) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', 'path + '&' + param', true); 
    xhr.send(); 
}; 
0

백엔드에서 자바 스크립트

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

    } 

에서

ChannelService channelService = ChannelServiceFactory.getChannelService(); 
channelService.sendMessage(new ChannelMessage(clientid,message));