永远不会调用OnMessage事件 - Websockets客户端(javascript)

时间:2015-06-22 18:27:14

标签: javascript c# html sockets websocket

我在编写客户端以建立Web套接字连接时遇到问题。客户端成功建立连接,但是当服务器发送数据时,OnMessage事件永远不会被触发。我正在使用 OWIN Websocket Extension 作为我的服务器端部分。

服务器

dynamic data = fillData(value);
string sendInfo = Newtonsoft.Json.JsonConvert.SerializeObject(data);
byte[] infoBytes = System.Text.Encoding.UTF8.GetBytes(sendInfo);
await sendAsync(new ArraySegment<byte>(infoBytes), 1, false, pair.Key.callCancelled);

客户端

    try {
        url = "wss://localhost/piwebapi/elements/E0DqD5loBNH0erqeqJodtALA2U5w0WX-5BGAupiQlq51PAUkVTVFVOSVRcU1VHQVJNQU5cU0FNUExFIEVMRU1FTlQ/attributes";
        socket = new WebSocket(url);

        socket.onopen = function (openEvent) {
            document.getElementById("serverStatus").innerHTML =
               'WebSocket Status:: Socket Open';
            document.getElementById("destination").innerHTML =
                url;
        };

        socket.onmessage = function (messageEvent) {

            if (messageEvent.data instanceof Blob) {
                var destinationCanvas = document.getElementById('destination');
                var destinationContext = destinationCanvas.getContext('2d');
                var image = new Image();
                image.onload = function () {
                    destinationContext.clearRect(0, 0,
                       destinationCanvas.width, destinationCanvas.height);
                    destinationContext.drawImage(image, 0, 0);
                }
                image.src = URL.createObjectURL(messageEvent.data);
            } else {
                document.getElementById("serverResponse").innerHTML =
                   'Server Reply:: ' + messageEvent.data;
            }
        };

        socket.onerror = function (errorEvent) {
            document.getElementById("serverStatus").innerHTML =
              'WebSocket Status:: Error was reported';
        };

        socket.onclose = function (closeEvent) {
            document.getElementById("serverStatus").innerHTML =
              'WebSocket Status:: Socket Closed';
        };
    }
    catch (exception) { if (window.console) console.log(exception); }

OnOpen和OnClose工作得很好但不知何故OnMessage永远不会被触发,任何想法?

编辑 - 将数据从客户端发送到服务器也可以。

0 个答案:

没有答案
相关问题