婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > html5-websocket基于遠(yuǎn)程方法調(diào)用的數(shù)據(jù)交互實(shí)現(xiàn)

html5-websocket基于遠(yuǎn)程方法調(diào)用的數(shù)據(jù)交互實(shí)現(xiàn)

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

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

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

HTML:

功能很簡單就是連接到websocket服務(wù)后進(jìn)行注冊信息提交,當(dāng)然為了更靈活點(diǎn)我們在監(jiān)測到連接關(guān)閉的時候重新打開連接窗體,具體的JS代碼如下:

復(fù)制代碼
代碼如下:

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的基礎(chǔ)上封裝了一個TcpChannel,詳細(xì)代碼可以下載了解.連接成功后就進(jìn)入了注冊窗體

 

通過填寫一些注冊信息后,點(diǎn)擊注冊把信息通過WebSocket提交給服務(wù)端,相關(guān)提交的JS代碼如下:

復(fù)制代碼
代碼如下:

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;
}
});
}

當(dāng)驗(yàn)證數(shù)據(jù)成功后通過TcpChannel發(fā)送一個方法調(diào)用描述對象即可,url是指定調(diào)用的類方法,而paramters即是方法的參數(shù),參數(shù)也可以是復(fù)雜的結(jié)構(gòu)類型.第二個參數(shù)是一個回調(diào)處理. 

C#

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

復(fù)制代碼
代碼如下:

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

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



復(fù)制代碼
代碼如下:
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對象消息交互和處理就完成,只需很少量的代碼就實(shí)現(xiàn)了js和服務(wù)進(jìn)行數(shù)據(jù)交互的處理.要實(shí)現(xiàn)這方便交互功能以下幾個封裝省不了.websocket協(xié)議分析,對象json處理和消息控制分發(fā);如果想了解相關(guān)細(xì)可以下載源碼查看.

WebSocket.Server.rar (641.79 kb)

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《html5-websocket基于遠(yuǎn)程方法調(diào)用的數(shù)據(jù)交互實(shí)現(xiàn)》,本文關(guān)鍵詞  html5-websocket,基于,遠(yuǎn)程,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《html5-websocket基于遠(yuǎn)程方法調(diào)用的數(shù)據(jù)交互實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁收集關(guān)于html5-websocket基于遠(yuǎn)程方法調(diào)用的數(shù)據(jù)交互實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 清远市| 金秀| 宝兴县| 巴东县| 长子县| 盘山县| 安庆市| 巫山县| 凌云县| 淮滨县| 高平市| 安阳县| 周宁县| 榕江县| 腾冲县| 定远县| 株洲市| 长武县| 个旧市| 吴桥县| 永吉县| 阿城市| 临湘市| 贡嘎县| 宜良县| 华池县| 灌南县| 乌苏市| 西盟| 泸溪县| 页游| 陕西省| 中山市| 东丰县| 平塘县| 香格里拉县| 永清县| 修武县| 镇安县| 祁门县| 临朐县|