【问题标题】:WebSocket Javascript client not receiving messages from serverWebSocket Javascript客户端未从服务器接收消息
【发布时间】:2016-03-05 17:52:32
【问题描述】:

我在本地 GlassFish 4.1 服务器上部署了一个 Java Web 应用程序,该服务器实现了 WebSockets 以与 Web 客户端进行互操作。我能够通过套接字成功执行客户端到服务器的通信,但是由于某种原因,服务器到客户端的通信不起作用。

向客户端发送消息的 Java 代码:

try 
{
    String msg = ServerClientInteropManager.toResponseJSON(response);
    parentSession.getBasicRemote().sendText(msg);
    FLAIRLogger.get().info("Sent response to client. Message: " + msg);
}
catch (IOException ex) {
    FLAIRLogger.get().error("Couldn't send message to session " + parentSession.getid() + ". Exception - " + ex.getMessage());
}

Javascript 代码:

pipeline_internal_onMessage = function(event)
{
    var msg = JSON.parse(event.data);
    console.log("Received message from server. Data: " + event.data);
};

function pipeline_init()
{
    if (PIPELINE !== null || PIPELINE_CONNECTED === true)
    {
        console.log("Pipline already initialized");
        return false;
    }
    else 
    {
        var pipelineURI = "ws://" + document.location.host + document.location.pathname + "webranker";
        console.log("Attempting to establish connection with WebSocket @ " + pipelineURI);

        if ('WebSocket' in window)
            PIPELINE = new WebSocket(pipelineURI);
        else if ('MozWebSocket' in window)
            PIPELINE = new MozWebSocket(pipelineURI);
        else
        {
            console.log("FATAL: No WebSockets support");
            alert("This browser does not support WebSockets. Please upgrade to a newer version or switch to a browser that supports WebSockets.");
            return false;
        }

        // the other event listeners get added here
        PIPELINE.onMessage = pipeline_internal_onMessage;
        PIPELINE_CONNECTED = true;

        window.onbeforeunload = function() {
            pipeline_deinit();  
        };

        console.log("Pipeline initialized");
        return true;
    }
}

onMessage 函数永远不会被触发,即使服务器成功调用了 sendText() 方法。使用 AsyncRemote 会产生相同的结果。两端的 onError 监听器也不报告任何内容。这是我第一次使用套接字,所以我可能会遗漏一些基本的东西。

【问题讨论】:

    标签: javascript java websocket


    【解决方案1】:

    替换

    PIPELINE.onMessage = pipeline_internal_onMessage
    

    PIPELINE.onmessage = pipeline_internal_onMessage
    

    更多信息请参考here

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 2019-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      相关资源
      最近更新 更多