SignalR的Javascript客戶端API使用方式整合
PersistentConnection | Hub/生成Proxy模式 | Hub/非生成Proxy模式 | |
服務端配置 | app.Map("/messageConnection", map => |
app.Map("/messageHub", map => |
app.Map("/messageHub", map => |
引入js檔案 | jquery-1.6.4.min.js jquery.signalR-2.2.0.min.js |
jquery-1.6.4.min.js jquery.signalR-2.2.0.min.js /messageHub/js 上述js檔案是動態生成,其中messageHub的為服務端定義的路徑 |
jquery-1.6.4.min.js jquery.signalR-2.2.0.min.js |
建立連線 | var connection = $.connection("/message"); | var connection = $.connection; | var connection = $.hubConnection(); |
開啟連線 | connection.start() |
connection.hub.start() |
connection.start() |
代理物件 | 無 | var proxy = connection.MessageService; MessageService是Hub的名稱 |
var proxy = connection.createHubProxy("MessageService"); MessageService是Hub的名稱 |
定義客戶端方法 | 無 | proxy.client.hello = function (message) { } |
proxy.on("hello", function (message) { console.log(message); }); |
接收訊息 | connection.received(function (message) { |
通過伺服器呼叫客戶端方法實現 |
通過伺服器呼叫客戶端方法實現 |
傳送訊息 | connection.send(message); | 通過呼叫服務端方法實現 proxy.server.hello(message); |
通過呼叫服務端方法實現 proxy.invoke("hello", message); |
設定QueryString | 在建立connection時指定 var connection = $.connection("/messageConnection", { username: "qs" + username }); |
connection.hub.qs = { username: "qs" + username }; |
connection.qs = { username: "qs" + username }; |
設定Cookie | document.cookie = "username=" + username; | document.cookie = "username=" + username; | document.cookie = "username=" + username; |
設定State | 無 | proxy.state.ClientType = "HubAutoProxy"; | proxy.state.ClientType = "HubNonAutoProxy"; |