目錄
- 一步一步學習SignalR進行實時通信_7_非代理
- 前言
- 代理與非代理
- 建立連接配接
- 調用方法
- 維持狀态
- 從伺服器接收
- 結束語
- 參考文獻
一步一步學習SignalR進行實時通信_7_非代理
标簽(空格分隔): SignalR
前言
距離上次寫部落格已經一個多月了,一直想抽空寫,卻一直沒時間寫。現在緊接着要開始畢業設計了,工作的同時還要抽時間完成畢業設計,心也是有些累。由于自己是個.NET迷,自己的工作也是.net開發,老師給的畢業設計百分之八九十都是安卓java相關,雖然之前也學過但是自己還是喜歡.net開發,今天突發奇想,做個和Singalr相關的畢業設計,将自己的想法以及應用場景和老師提了下,還是得到了肯定,如果确定了,希望能将自己的畢業設計抽時間寫下來能分享給大家。
是以為什麼今天硬是開工繼續寫,也是為了盡快完成這篇文章,脫了太長時間了。
代理與非代理
今天講的内容是非代理,那為什麼不将代理呢?因為之前我們實作的所有功能都是通過代理的方法。那麼代理和非代理的差別是什麼呢?我也不知道
但是,據我了解代理可能會造成額外的帶寬和處理器的開銷,通過代理在安全性也不如非代理,它将操作直接暴露給用戶端。(若有不對,請糾正)
代理的優點:簡化開發。
但是非代理其實也沒有想象中的困難,它隻是用來不同的文法來做與代理相同的事情。
建立連接配接
當不用代理進行連接配接時,我們無需引入/Singalr/hubs或者之前我們做的一些配置,如:
<script src="Scripts/jquery-1.6.4.min.js"></script> <script src="Scripts/jquery.signalR-2.0.0.min.js"></script>
var connection = $.hubConnection("/realtime");
connection.start()
.done(function () {
// Code
});
app.MapSignalR("/realtime", new HubConfiguration())
這些我們統統不需要!
如果我們不用代理,最好的辦法是禁用它們,我們可以通過以下代碼配置:
public void Configuration(IAppBuilder app)
{
app.MapSignalR(new HubConfiguration()
{
EnableJavaScriptProxies = false
});
}
即使我們不用自動生成的代理類,我們也需要一個對象來調用和接受伺服器的事件。
首先我們通過
createHubProxy
手動建立一個代理
var connection = $.hubConnection();
var proxy = connection.createHubProxy("AlertService");
調用方法
通過
invoke()
執行伺服器的操作
connection.start().done(function () {
proxy.invoke("Alert", "I felt a great disturbance in the force");
});
第一個參數:執行伺服器的alert方法,此參數不區分大小寫
第二個參數:可以是任意類型,該參數會傳遞給伺服器
和
invoke()
方法一樣可以實作promise模式
start()
proxy.invoke("divide", 100, prompt("Divisor?"))
.done(function(result) {
alert(result);
})
.fail(function(err) {
alert(err);
});
維持狀态
同時我們也可以保持狀态
var proxy = connection.createHubProxy("AlertService");
proxy.state.MsgId = 1;
proxy.state.UserName = "Obi Wan";
從伺服器接收
我們通過
on()
捕獲
proxy.on("ShowAlert", function(msg) { alert(msg); });
第一個參數是伺服器指定調用的方法名,第二個參數是匿名方法将被執行。
結束語
今天簡單介紹一下代理與非代理的差別,下一講将分析一個小例子來掌握。
本文釋出至作業部落
參考文獻
SignalR Programming in Microsoft ASP.NET pdf 下載下傳
目錄
- 一步一步學習SignalR進行實時通信_7_非代理
- 前言
- 代理與非代理
- 建立連接配接
- 調用方法
- 維持狀态
- 從伺服器接收
- 結束語
- 參考文獻
一步一步學習SignalR進行實時通信_7_非代理
标簽(空格分隔): SignalR
前言
距離上次寫部落格已經一個多月了,一直想抽空寫,卻一直沒時間寫。現在緊接着要開始畢業設計了,工作的同時還要抽時間完成畢業設計,心也是有些累。由于自己是個.NET迷,自己的工作也是.net開發,老師給的畢業設計百分之八九十都是安卓java相關,雖然之前也學過但是自己還是喜歡.net開發,今天突發奇想,做個和Singalr相關的畢業設計,将自己的想法以及應用場景和老師提了下,還是得到了肯定,如果确定了,希望能将自己的畢業設計抽時間寫下來能分享給大家。
是以為什麼今天硬是開工繼續寫,也是為了盡快完成這篇文章,脫了太長時間了。
代理與非代理
今天講的内容是非代理,那為什麼不将代理呢?因為之前我們實作的所有功能都是通過代理的方法。那麼代理和非代理的差別是什麼呢?我也不知道
但是,據我了解代理可能會造成額外的帶寬和處理器的開銷,通過代理在安全性也不如非代理,它将操作直接暴露給用戶端。(若有不對,請糾正)
代理的優點:簡化開發。
但是非代理其實也沒有想象中的困難,它隻是用來不同的文法來做與代理相同的事情。
建立連接配接
當不用代理進行連接配接時,我們無需引入/Singalr/hubs或者之前我們做的一些配置,如:
<script src="Scripts/jquery-1.6.4.min.js"></script> <script src="Scripts/jquery.signalR-2.0.0.min.js"></script>
var connection = $.hubConnection("/realtime");
connection.start()
.done(function () {
// Code
});
app.MapSignalR("/realtime", new HubConfiguration())
這些我們統統不需要!
如果我們不用代理,最好的辦法是禁用它們,我們可以通過以下代碼配置:
public void Configuration(IAppBuilder app)
{
app.MapSignalR(new HubConfiguration()
{
EnableJavaScriptProxies = false
});
}
即使我們不用自動生成的代理類,我們也需要一個對象來調用和接受伺服器的事件。
首先我們通過
createHubProxy
手動建立一個代理
var connection = $.hubConnection();
var proxy = connection.createHubProxy("AlertService");
調用方法
通過
invoke()
執行伺服器的操作
connection.start().done(function () {
proxy.invoke("Alert", "I felt a great disturbance in the force");
});
第一個參數:執行伺服器的alert方法,此參數不區分大小寫
第二個參數:可以是任意類型,該參數會傳遞給伺服器
和
invoke()
方法一樣可以實作promise模式
start()
proxy.invoke("divide", 100, prompt("Divisor?"))
.done(function(result) {
alert(result);
})
.fail(function(err) {
alert(err);
});
維持狀态
同時我們也可以保持狀态
var proxy = connection.createHubProxy("AlertService");
proxy.state.MsgId = 1;
proxy.state.UserName = "Obi Wan";
從伺服器接收
我們通過
on()
捕獲
proxy.on("ShowAlert", function(msg) { alert(msg); });
第一個參數是伺服器指定調用的方法名,第二個參數是匿名方法将被執行。
結束語
今天簡單介紹一下代理與非代理的差別,下一講将分析一個小例子來掌握。
本文釋出至作業部落
參考文獻
SignalR Programming in Microsoft ASP.NET pdf 下載下傳