困擾很久的問題終於解決: signalr 2.4.1 配合 js3.4.1 在 chrome 正常 但是在 edge 和 ie11 無法接收訊息

用最新版的 signalr 2.4  配合 舊版的 js2.2.4版本 在 IE Edge Chrome 都是正常的
但是只要換到 js 3.0以上 版本  IE Edge 就收不到訊息 但是發出沒問題
之前一直查不到原因
看網路上的回答 像是 IE 的 cache 問題 $.ajaxSetup({ cache: false });
也都沒有用
今天好好地看一下

SignalR 疑難排解


看到下面的一個重點

不正確 JavaScript 用戶端程式碼,不允許中樞接收訊息
var chat = $.connection.chatHub;
$.connection.hub.start().done(function () {
    chat.client.broadcastMessage = function (name, message) {...};
});
相反地,加入方法的訂用帳戶呼叫開始之前:
正確加入至中樞的 訂用帳戶的 JavaScript 用戶端程式碼
var chat = $.connection.chatHub;
chat.client.broadcastMessage = function (name, message) {...};
    $.connection.hub.start().done(function () {
        ...
    });

*****************************
原來寫法改了
原先我是這樣寫
先連接 Server
var chat = $.connection.chatHub; $.connection.hub.start().done(function () {...});
在後面加要溝通的函數
chat.client.broadcastMessage = function (name, message) {...};

現在改成
先宣告要用的溝通函數
chat.client.broadcastMessage = function (name, message) {...};
最後再連接
$.connection.hub.start().done(function () {...});
這樣做之後 IE Edge 就正常了
XD 就是這樣而已





留言

熱門文章