2012-04-02 47 views
0

首先感謝Moishe的精彩頻道API。 我正在運行Google Channel API文檔中給出的一個簡單場景。我面臨的問題是頻道在打開後立即關閉。頻道api GAE頻道開放後立即關閉

/* Client Side */ 
public class Feed extends HttpServlet { 


private static String feed= 
    "<html>" + 
    "<head>" + 
    "<title>Login</title>" + 
    "<script type=\"text/javascript\" src="/_ah/channel/jsapi\"></script>" + 
    "</head>" + 
    "<body>" + 
    "Feed" + 
    "<script>" + 
    "channel=new goog.appengine.Channel('{{ token }}');" + 
    "socket=channel.open();" + 
    "socket.onOpen=alert(\"channel opened");" + 
    "socket.onMessage=alert(\"New Message\");" + 
    "socket.onClose=alert(\"Socket Closed\");" + 
    "socket.onError=alert(\"Error\");" + 
    "</script>" + 
    "</body>" + 
    "</html>";" 

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException{ 

    ChannelService channelservice=ChannelServiceFactory.getChannelService(); 
    String token=channelservice.createChannel("sample"); 
    feed = feed.replaceAll("\\{\\{ token \\}\\}", token); 
    res.setContentType("text/html"); 
    res.getWriter().write(feed); 
} 

} 

/* Server Side*/ 

public class QuestAsk extends HttpServlet{ 

    public void doPost(HttpServletRequest req, HttpServletResponse resp) 
    { 
     ChannelService channelService=ChannelServiceFactory.getChannelService(); 
     channelService.sendMessage(new ChannelMessage("sample","sample message")); 
    } 
} 

我向Feed發出GET請求。

這就是當我看到頻道打開,然後收到未定義的消息 - >頻道關閉 - >頻道錯誤。

顯然,我在這裏忽略了一些東西。非常感謝,如果有人能指出。謝謝你的幫助。

問候

JR

回答

1

有兩個問題,我看到:

首先的OnOpen等方面都沒有資本,所以你在插座分配錯誤的價值觀。你應該使用socket.onopen,socket.onmessage,socket.onclose和socket.onerror。

其次,你分配結果呼叫提醒()來socket.onOpen等等。相反,你要分配功能這些功能,所以你應該做這樣的事情:

socket.onopen = function() {alert('Channel opened.');}; 
// etc 

我相信這會修復你的代碼。

+0

非常感謝Moishe。這工作!是大寫錯誤。非常感謝您指出這一點。 – user1302884 2012-04-03 07:00:06