Tīmekļa ligzda ir TCP ligzdas savienojums starp klientu un serveri tīklā. Būtībā tīmekļa kontaktligzda ir divvirzienu pilna dupleksa komunikācija starp klientu un serveri tīklā. Pieaugošais pieprasījums pēc reāllaika, zema latentuma ziņojumapmaiņa gan tīmeklī, gan mobilajās lietojumprogrammās ir izraisījusi tīmekļa ligzdu parādīšanos. Šis ir protokols, kas ļauj nodrošināt reāllaika, ātru, divvirzienu komunikāciju savās lietojumprogrammās, un nav nepieciešamības kompromitēt lietotāja pieredzi.
WebSockets ir uz ziņojumu balstīts protokols, kas izmanto TCP straumēta savienojuma priekšrocības. Vārdvieta System.Net.WebSockets nodrošina atbalstu darbam ar tīmekļa ligzdām .Net. Ņemiet vērā, ka tīmekļa kontaktligzdas savienojums starp serveri un klienta lietojumprogrammu tiek izveidots, izmantojot HTTP rokasspiediena apmaiņu starp tiem.
MSDN norāda: "WebSockets ļauj pārlūkiem atvērt divvirzienu, pilndupleksu sakaru kanālu ar pakalpojumiem. Pēc tam katra puse var izmantot šo kanālu, lai nekavējoties nosūtītu datus otram. Tagad vietnes no sociālajiem tīkliem un spēlēm uz finanšu vietnēm var nodrošināt labākus rezultātus. reāllaika scenāriji, ideālā gadījumā izmantojot dažādas iezīmes dažādās pārlūkprogrammās. "
Šeit varat uzzināt vairāk par WebSocket protokolu.
Darbs ar WebSockets .Net
Hostējot savas tīmekļa kontaktligzdas servera pusē, izmantojot .Net, jums ir dažas izvēles iespējas. WebSocket serveri var mitināt tradicionālajās ASP.Net vai ASP.Net MVC lietojumprogrammās. Lai to izdarītu, jums būs jāizmanto HttpContext.AcceptWebSocketRequest priekšrocības. Pēc tam klienta pusē var būt tīmekļa lietojumprogramma, lai izveidotu savienojumu ar tīmekļa kontaktligzdu un sazinātos ziņojumu apmaiņai. Varat arī izveidot WCF pakalpojumu, kas izmanto netHttpBinding, un izmantot pakalpojumu CallbackContract. Pēc tam varat izmantot HttpContext.AcceptWebSocketRequest priekšrocības vai pat izmantot WebSocketHandler vai WebSocketHost, kas pieejams kā daļa no Microsoft.WebSockets.dll.
Klienta pusē savā tīmekļa vietnē varat izmantot HTML5 un jQuery priekšrocības. Varat arī izmantot ClientWebSocket klasi, lai izveidotu klienta lietojumprogrammu, vai pat izmantot WCF klientu, lai izveidotu savienojumu ar tīmekļa kontaktligzdu.
Ņemiet vērā, ka HttpContext objektā tagad (kopš .Net Framework 4.5) ir jauns rekvizīts ar nosaukumu IsWebSocketRequest. Varat izmantot šī HttpContext objekta rekvizītus, lai pārbaudītu, vai ienākošais pieprasījums ir tīmekļa kontaktligzdas pieprasījums. Šis kodu saraksts parāda, kā varat izveidot tīmekļa kontaktligzdu, izmantojot HttpHandler.
sabiedriskās klases apkalpošana: IHttpHandler
{
public void ProcessRequest (HttpContext konteksts)
{
ja (context.IsWebSocketRequest)
context.AcceptWebSocketRequest (ProcessRequestInternal);
cits
context.Response.StatusCode = 400;
}
publiskais bols ir atkārtoti lietojams
{
gūt
{
atgriezties nepatiesa;
}
}
privāts asinhronais uzdevuma processRequestInternal (AspNetWebSocketContext konteksts)
{
WebSocket ligzda = context.WebSocket;
kamēr (taisnība)
{
// Lai apstrādātu pieprasījumu, uzrakstiet šeit savu kodu
}
}
}
Http apdarinātājs jāreģistrē lietojumprogrammas failā web.config. Šis ir koda fragments, kas parāda, kā jums tas jādara.
type = "Web.Handler" />
Tīmekļa ligzdas varat izmantot arī savos Web API kontrolieros. Starp citu, ASP.Net Web API ir viegls ietvars, ko izmanto, lai izveidotu RESTful pakalpojumus, kas darbojas ar HTTP. RESTful pakalpojumi ir nelieli, bezvalstnieki, klienta-servera bāzes, kešatmiņā saglabāti pakalpojumi, kuru pamatā ir resursu jēdziens. Šis koda fragments parāda, kā Web ligzdu var ieviest Web API kontroliera metodē - ņemiet vērā HttpContext.AcceptWebSocketRequest lietojumu, lai pieņemtu un izveidotu savienojumus.
publiskās klases WebSocketController: ApiController
{
[HttpGet]
public HttpResponseMessage GetMessage ()
{
ja (HttpContext.Current.IsWebSocketRequest)
{
HttpContext.Current.AcceptWebSocketRequest (ProcessRequestInternal);
}
atgriezt jaunu HttpResponseMessage (HttpStatusCode.SwitchingProtocols);
}
privāts asinhronais uzdevuma processRequestInternal (konteksts AspNetWebSocketContext)
{
// Lai apstrādātu pieprasījumu, uzrakstiet šeit savu kodu
}
}
Klienta pusē jums būs jāizveido savienojums ar tīmekļa kontaktligzdu, norādot URI, ko izmanto WebSocket savienojuma pieprasījuma nosūtīšanai.
var webSocket = new WebSocket ("ws: //" + window.location.hostname +
"/ Web / api / WebSocket");
webSocket.onopen = function () {
$ ("# status"). text ("Savienots ...");
};
Varat arī izmantot jaunās Microsoft.Web.WebSockets.WebSocketHandler klases priekšrocības, lai tagad ieviestu tīmekļa kontaktligzdas. Lai izmantotu šo klasi, jums jāinstalē Microsoft.WebSockets pakete, izmantojot NuGet Package Manager. Varat arī to pašu pakotni instalēt, palaižot komandu NuGet Package Manager Console.
Instalēt pakešu Microsoft.WebSockets
Šis koda fragments parāda, kā paplašināt WebSocketHandler klasi, lai izveidotu savu pielāgoto apdarinātāju.
publiskā klase WebSocketHandler: WebSocketHandler
{
privāta statiska WebSocketCollection socketClients = new WebSocketCollection ();
publiska ignorēšana spēkā neesoša OnOpen ()
{
socketClients.Add (šo);
socketClients.Broadcast ("Tas ir paredzēts visiem savienotajiem klientiem ...");
this.Send ("Sveiciens no:" + this.WebSocketContext.UserHostAddress);
}
publiska ignorēšana spēkā neesoša OnClose ()
{
bāze.OnClose ();
}
publiska ignorēšana spēkā neesoša OnError ()
{
bāze.OnError ();
}
}