localhost で gae Web アプリを実行しています。goog.channel からトークンを正常に生成し、クライアントに送信しました。クライアントがトークンを受け入れることができ、接続を開こうとする場所。問題は、サーブレット クラスからメッセージを送信しているのに、クライアント側で何も起きていないことです。
以下は私のコードです:
サーバ側:
//for generating token
ChannelService channelService=ChannelServiceFactory.getChannelService();
token = channelService.createChannel(userid);
//for sending message
ChannelService channelService=ChannelServiceFactory.getChannelService();
channelService.sendMessage(new ChannelMessage(userid, message));
//in appengine-web.xml
<inbound-services>
<service>channel_presence</service>
</inbound-services>
Javascript:
function getToken(){
var xmlhttpreq=new XMLHttpRequest();
xmlhttpreq.open('GET',host+'/channelapi_token?q='+user,false);
xmlhttpreq.send();
xmlhttpreq.onreadystatechange=alert(xmlhttpreq.responseText);
token=xmlhttpreq.responseText;
setChannel();
}
function setChannel(){
alert(token);//iam receiving right token here
channel=new goog.appengine.Channel(token);
socket=channel.open();
socket.open=alert('socket opened');//this message alerts
socket.onmessage=alert('socket onmessage');//this message alerts
socket.onerror=alert('socket onerror');//this message alerts
socket.onclose=alert('socket onclose');//this message alerts
}
channelservice からメッセージを送信する際に例外はありません。また、クライアント側はサーバーに get リクエストを繰り返し行っています。
ここで何が間違っているのですか?前もって感謝します。