好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > html5-websocket基于遠程方法調用的數據交互實現

html5-websocket基于遠程方法調用的數據交互實現

熱門標簽:高德地圖標注錯誤怎么修改 標準智能外呼系統 平頂山電子地圖標注怎么修改 電銷機器人視頻 江蘇高頻外呼系統線路 搜狗星級酒店地圖標注 洛陽市伊川縣地圖標注中心官網 地圖標注自己去過的地方 會聲會影怎樣做地圖標注效果

一般在傳統網頁中注冊用戶信息都是通過post或ajax提交到頁面處理,到了HTML5后我們有另一種方法就是通過websocket進行數據交互.websocket在數據交互有著傳統網頁所不具備的靈活性,通過Websocket建立長連接后服務器可以直接向client發送數據,而每次數據交互沒有必要帶上大量的http頭信息.websocket協議本身支持兩種數據格式文本和流,通過文本json的方式和javascript交互是一件非常簡單事情,通過json網頁和Websocket通訊就非常便利,但要達到這個便利性我們還是要做簡單的一些包裝還好現有的json在各平臺的組件都比較成熟.通過分析json數據映射到服務端對應的方法執行處理.

下面通過一個簡單的用戶注冊來體現html5用josn和websocket進行交互的處理過程.由于經過封裝處理所以使用起來非常方便.

HTML:

功能很簡單就是連接到websocket服務后進行注冊信息提交,當然為了更靈活點我們在監測到連接關閉的時候重新打開連接窗體,具體的JS代碼如下:

復制代碼
代碼如下:

function connect() {
channel = new TcpChannel();
channel.Connected = function (evt) {
$('#dlgConnect').dialog('close');
};
channel.Disposed = function (evt) {
$('#dlgConnect').dialog('open');
};
channel.Error = function (evt) {
alert(evt);
};
channel.Connect($('#txtHost').val());
}

代碼是不是很簡潔,主要原因是在WebSocket的基礎上封裝了一個TcpChannel,詳細代碼可以下載了解.連接成功后就進入了注冊窗體

 

通過填寫一些注冊信息后,點擊注冊把信息通過WebSocket提交給服務端,相關提交的JS代碼如下:

復制代碼
代碼如下:

var invokeregister = { url: 'Handler.OnRegister', parameters: { UserName: '', Email: '', PassWord: ''} };
function register() {
$('#frmRegister').form('submit', {
onSubmit: function () {
var isValid = $(this).form('validate');
if (isValid) {
invokeregister.parameters = $('#frmRegister').serializeObject();
channel.Send(invokeregister, function (result) {
alert(result.data);
});
}
return false;
}
});
}

當驗證數據成功后通過TcpChannel發送一個方法調用描述對象即可,url是指定調用的類方法,而paramters即是方法的參數,參數也可以是復雜的結構類型.第二個參數是一個回調處理. 

C#

服務由于基于Beetle的擴展處理,所以代碼是非常簡單的.針對以上注冊的邏輯方法代碼如下:

復制代碼
代碼如下:

public class Handler
{
public string OnRegister(string UserName, string Email, string PassWord)
{
Console.WriteLine(UserName);
Console.WriteLine(Email);
Console.WriteLine(PassWord);
return UserName;
}
}

方法只需要定義相關參數即可,Beetle的消息擴展控制器會自動分析js提交的json數據進行分析并綁定到相關方法中執行.對于控制器的詳細代碼也可以通過下載代得到.邏輯編寫完成我們只需要簡單地打開相關websocket服務即可.



復制代碼
代碼如下:
class Program:WebSocketJsonServer
{
static void Main(string[] args)
{
Beetle.Controllers.Controller.Register(new Handler());
TcpUtils.Setup("beetle");
Program server = new Program();
server.Open(8088);
Console.WriteLine("websocket start@8088");
System.Threading.Thread.Sleep(-1);
}
protected override void OnError(object sender, ChannelErrorEventArgs e)
{
base.OnError(sender, e);
Console.WriteLine(e.Exception.Message);
}
protected override void OnConnected(object sender, ChannelEventArgs e)
{
base.OnConnected(sender, e);
Console.WriteLine("{0} connected", e.Channel.EndPoint);
}
protected override void OnDisposed(object sender, ChannelDisposedEventArgs e)
{
base.OnDisposed(sender, e);
Console.WriteLine("{0} disposed", e.Channel.EndPoint);
}
}
這樣一個基于html5的websocket對象消息交互和處理就完成,只需很少量的代碼就實現了js和服務進行數據交互的處理.要實現這方便交互功能以下幾個封裝省不了.websocket協議分析,對象json處理和消息控制分發;如果想了解相關細可以下載源碼查看.

WebSocket.Server.rar (641.79 kb)

標簽:常德 廣西 蚌埠 果洛 阿克蘇 廣東 鄂爾多斯 松原

巨人網絡通訊聲明:本文標題《html5-websocket基于遠程方法調用的數據交互實現》,本文關鍵詞  html5-websocket,基于,遠程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《html5-websocket基于遠程方法調用的數據交互實現》相關的同類信息!
  • 本頁收集關于html5-websocket基于遠程方法調用的數據交互實現的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 在车内揉搓她的双乳| 啊轻点灬太粗嗯太深A片| 欧美胖妇bbwxxbbw| 粗了大了整进去好爽视频 | 欧美乱理伦另类视频| 狠狠色狠狠色综合日日92| 老牛和嫩草的H文| 自慰看的小黄说| 美女露出逼| 暴露娇妻被调教用力胬视频| 香蕉久久夜色精品国产使用方法| 3d成人性动漫在线观看| 69色综合| 多人灌满精子怀孕高h| 99久久综合精品免费| 人妻 日韩 欧美 综合 制服| 伴郎的粗大h| 嗯灬啊灬把腿张开灬动态图| 国产美女福利| 欧美精品一区二区三区AV麻豆| 午夜精品久久高湖黑人| 激情床戏视频办公室大尺度| 日韩免费一级毛片| 狠狠色丁香婷婷综合久久软件 | 一个人看的免费高清www在线观看 24小时日本在线观看手机免费 | 教室里面高潮迭起嗯嗯嗯嗯嗯| 色婷婷综合久久久久中文一区二区 | 国产精品自产拍高潮在线观看 | 同性男男Gay片在线观看播放 | 黄视频在线观看www软件| 男女床上网站| 在线无码精品秘?入口四色| 欧美?日产?国产精品| 福利视频10000| 特级做a爰片毛片免费看| 一女多男的婬乱小说| 免费看成人做XXOO视频图片| 英语老师的大白兔子又大又好吃 | 男同漫画网站| 韩国啪啪调教所第一季第1话| 97人洗澡人人澡人人双人|