SignalR入門學習記錄

2021-07-26 18:30:45 字數 1466 閱讀 5874

signalr有兩種客戶端和伺服器端的資料互動模式:長連線模式和hub(集線器模式)

1、signalr的長連線模式

伺服器端,新建乙個繼承persistentconnection的自定義類(如果是vs2013,則編輯器新建專案裡面會有建立「永久鏈結類」選項,這裡我是用的vs2012,需要自定義個類)這個類的作用就是處理伺服器接受客戶端傳送過來的訊息以及將訊息傳送到客戶端,如下:

}protected override system.threading.tasks.task ondisconnected(irequest request, string connectionid, bool stopcalled)

protected override system.threading.tasks.task onreconnected(irequest request, string connectionid)}}

}}}注意紅色部分說明,如果只選用永久連線模式,則需要把下面的**注釋掉,反之亦然

客戶端示例**:

聊天記錄:

傳送內容:

執行結果截圖如下:

如果將上面綠色**處的**1注釋去掉的話,那麼當在多個瀏覽器裡面開啟這個頁面,然後再其中乙個瀏覽器傳送一條訊息的時候,其他幾個瀏覽器的頁面也會顯示這條訊息

2、hub(集線器模式)模式

後台**部分,新建乙個繼承hub類的自定義類,如下:

public void serverhello()

public void serverhello(string data,int index)

public override system.threading.tasks.task onconnected()

public override system.threading.tasks.task ondisconnected(bool stopcalled)

public override system.threading.tasks.task onreconnected()}}

集線器模式的**和永久鏈結模式的**很相似,也是可以重寫幾個基類的方法,當時集線器模式裡面沒有接受資訊的**,而且可以自定義函式,這些自定義函式可以被客戶端「直接「訪問,同樣完成了上面的**也需要在後台註冊,這樣系統才能在後台將上面的**跑起來,註冊的方式已經在上面的**裡寫過

客戶端**:

定向傳送:

注意上面紫色部分的js**,因為集線器模式前端**初始化鏈結的時候分為自動**模式和手動**模式,如果是手動**模式,則只需要引用,這兩個指令碼,如果是自動**模式,伺服器你會自動產生乙個js指令碼,如上面我引用了這個指令碼,實際上這個指令碼只是在執行的時候伺服器自動給生成的,在編輯**的時候是不存在這個指令碼**的,,

手動**的時候,客戶端在呼叫伺服器端的函式的時候是沒辦法傳引數的

執行結果截圖如下:

在寫這篇部落格之前,我是看了乙個大神的部落格進行學習的,這是他的部落格位址我的這篇部落格只是一篇學習記錄,更詳細的內容可以參考這篇部落格

Signalr入門系列 Signalr簡介(二)

一 signalr和websocket signalr是在websocket的基礎上進一步的封裝,可以實現除了websocket原有功能上更多的功能,例如回退到其他transports,修改應用程式以更新websocket implementations。signalr可以自動判斷傳輸方式,在可以用...

Git入門學習記錄

git教程來自 廖雪峰的git教程。這裡說兩句趣談,當然也是從教程裡看到的,真的沒想到git的誕生是因為 開發samba的andrew試圖破解bitkeeper的協議 這麼幹的其實也不只他乙個 被bitmover公司發現了 監控工作做得不錯!於是bitmover公司怒了,要收回linux社群的免費使...

github 入門學習記錄

按照預設安裝一直點即可,安裝完成開啟gitbash ssh keygen t rsa c 註冊郵箱 輸入命令後,有三次詢問直接回車預設就可以,然後去到命令列中的位址找 點開此檔案複製裡面的ssh金鑰 在這裡建立金鑰 然後輸入ssh t git github.com 輸入yes後如上圖所示則為成功連線...