2013-02-27 161 views
3

是否可以編寫WebSocket(SignalR)客戶端,而無需將其嵌入IIS(或其他ASP.NET Web服務器)上託管的ASP.NET應用程序中?沒有ASP.NET的SignalR Web客戶端?

例如,如果我有一個帶有自定義Hub的Self Hosted SignalR Server,是否有可能(如果是這樣,如何)從「純」Javascript網頁客戶端調用它?

在這種情況下,我們在~/signalr/hubs/文件夾中沒有運行時生成的「魔術」腳本的<script src="~/signalr/hubs" type="text/javascript" />部件。

回答

6

您不需要有一個適用於SignalR的asp.net應用程序。您可以創建一個通用html頁面,並仍然與SignalR服務器通信。你甚至可以利用silverlight,windows phone或其他客戶端與SignalR服務器進行通信,目前支持的還有很多,第三方開發的更多(如android,ios,node等)。

當你說「純粹的」JavaScript客戶端時,我假設你的意思是沒有像JQuery這樣的第三方庫,在這種情況下,SignalR目前無法使用JQuery,但不依賴於JQuery的客戶端正在管道中(https://github.com/SignalR/SignalR/issues/372 )。

您可以使用ASP.NET Owin創建Self Hosted服務器來下拉SignalR。

編輯: 爲了使用自己託管的服務器,您必須在您的應用程序中啓用跨域。查看答案:SignalR: Error during negotiation request: undefined

+0

感謝您的回覆。仍然:客戶端Javascript代碼應該如何在不使用'〜/ signalr/hubs /'中的腳本的情況下調用SignalR Hub方法?允許使用jQuery,並允許使用jQuery的SignalR模塊(例如jquery.signalR-1.0.0.min.js)。 – Osi 2013-03-01 14:23:37

+0

所以我需要的是「創建一個通用的HTML頁面,並仍然與SignalR服務器通信」。不幸的是,我還沒有找到任何有關這方面的文檔。 – Osi 2013-03-01 14:29:23

+1

簽出SignalR wiki。調用沒有集線器代理和跨域支持的集線器方法:https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubs-%28No-Proxy%29。請注意,跨域也適用於WebSockets。 – 2013-03-01 19:02:30