不使用生成代理JS的實現
可能有同學會覺得使用集線器很麻煩,要么引入虛擬目錄,要么在生成期間生成js文件,再引入js文件進行開發。難道就沒有比較清爽的方式嗎?這個當然是有的,先不要(。・∀・)ノ゙嗨皮起來, 看完后再做出選擇
簡單看一下生成的js文件,其實代碼一大堆,我們也可以根據這個js來寫一個
首先我們需要有連接對象
let hubDemo = $.hubConnection("/simpleHub");
然后創建HubDemo類的代理
var proxy = hubDemo.createHubProxy("HubDemo");
然后就可以開啟連接了,這里使用了代理對象執行 HelloService方法
hubDemo.start().done(function () { proxy.invoke("HelloService"); });
記得HelloService方法里會調用HelloClient函數,所以這個也是不能少的
proxy.on("helloClient", function() { console.log("收到服務器的問候"); })
這時候可以運行起來看看效果了,嗯 這看起來很完美
完整代碼如下,可以看到這些類名和方法名都是需要去指定的,也就是雖然完全解耦但是這對開發帶來了難度,而這些代理也只是對代理生成的js的簡化版,而且也沒有智能提醒了,因為要自己寫-.- 兩種方式各有利弊,用哪個都不錯。根據項目情況自行選擇吧
let hubDemo = $.hubConnection("/simpleHub"); var proxy = hubDemo.createHubProxy("HubDemo"); hubDemo.start().done(function () { proxy.invoke("HelloService"); }); proxy.on("helloClient", function() { console.log("收到服務器的問候"); });
HubName與HubMethodName
我們可以使用這兩個特性為我們的方法與類進行重命名,比如方法名是Hello,但是我想要客戶端調用的是MyHello。
[HubMethodName("Hello")] public void HelloService(string age1, int age2) { Clients.All.helloClient(); }
HubName作用與HubMethodName的作用是類似的,不同的是作用於類上
[HubName("HubDemo2")] public class HubDemo : Hub


