【问题标题】:channel api GAE channel closed immediately after open通道 api GAE 通道打开后立即关闭
【发布时间】:2012-04-02 09:32:04
【问题描述】:

首先感谢 Moishe 提供的精彩 Channel API。 我正在运行 Google Channel API 文档中给出的简单场景。我面临的问题是通道打开后立即关闭。

/* 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

【问题讨论】:

    标签: google-app-engine channel-api


    【解决方案1】:

    我看到了两个问题:

    首先,onopen 等没有大写,因此您在套接字中分配了错误的值。您应该使用 socket.onopen、socket.onmessage、socket.onclose 和 socket.onerror。

    其次,您将调用 alert() 的 result 分配给 socket.onOpen 等。相反,您希望将 function 分配给这些函数,所以你应该这样做:

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

    我相信这会修复您的代码。

    【讨论】:

    • 非常感谢 Moishe。那行得通!是大写错误。非常感谢您指出这一点。
    猜你喜欢
    • 2018-05-02
    • 2012-08-08
    • 2013-09-02
    • 2021-07-29
    • 2017-08-20
    • 2017-11-21
    • 2014-11-23
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多