CINXE.COM

WebSocket – Wikipedia, wolna encyklopedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="pl" dir="ltr"> <head> <meta charset="UTF-8"> <title>WebSocket – Wikipedia, wolna encyklopedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )plwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t."," \t,"],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","styczeń","luty","marzec","kwiecień","maj","czerwiec","lipiec","sierpień","wrzesień","październik","listopad","grudzień"],"wgRequestId":"5dc54413-5fa0-4339-8519-5a6790846daf","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"WebSocket","wgTitle":"WebSocket","wgCurRevisionId":69867076,"wgRevisionId":69867076,"wgArticleId":2217732,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Uniwersalny szablon cytowania – brak strony","Uniform Resource Identifier"],"wgPageViewLanguage":"pl","wgPageContentLanguage":"pl","wgPageContentModel":"wikitext","wgRelevantPageName":"WebSocket","wgRelevantArticleId":2217732,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":true,"wgFlaggedRevsParams":{"tags":{"accuracy":{ "levels":1}}},"wgStableRevisionId":69867076,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"pl","pageLanguageDir":"ltr","pageVariantFallbacks":"pl"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q859938","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.gadget.wikiflex": "ready","ext.gadget.infobox":"ready","ext.gadget.hlist":"ready","ext.gadget.darkmode-overrides":"ready","ext.gadget.small-references":"ready","ext.gadget.citation-access-info":"ready","ext.gadget.sprawdz-problemy-szablony":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.flaggedRevs.basic":"ready","mediawiki.codex.messagebox.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","ext.scribunto.logs","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP", "ext.centralNotice.startUp","ext.flaggedRevs.advanced","ext.gadget.ll-script-loader","ext.gadget.veKeepParameters","ext.gadget.szablon-galeria","ext.gadget.NavFrame","ext.gadget.citoid-overrides","ext.gadget.maps","ext.gadget.padlock-indicators","ext.gadget.interwiki-langlist","ext.gadget.edit-summaries","ext.gadget.edit-first-section","ext.gadget.wikibugs","ext.gadget.map-toggler","ext.gadget.narrowFootnoteColumns","ext.gadget.WDsearch","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=pl&amp;modules=ext.cite.styles%7Cext.flaggedRevs.basic%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cmediawiki.codex.messagebox.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=pl&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=pl&amp;modules=ext.gadget.citation-access-info%2Cdarkmode-overrides%2Chlist%2Cinfobox%2Csmall-references%2Csprawdz-problemy-szablony%2Cwikiflex&amp;only=styles&amp;skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=pl&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="WebSocket – Wikipedia, wolna encyklopedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//pl.m.wikipedia.org/wiki/WebSocket"> <link rel="alternate" type="application/x-wiki" title="Edytuj" href="/w/index.php?title=WebSocket&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (pl)"> <link rel="EditURI" type="application/rsd+xml" href="//pl.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://pl.wikipedia.org/wiki/WebSocket"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.pl"> <link rel="alternate" type="application/atom+xml" title="Kanał Atom Wikipedii" href="/w/index.php?title=Specjalna:Ostatnie_zmiany&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-WebSocket rootpage-WebSocket skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Przejdź do zawartości</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Witryna"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Menu główne" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Menu główne</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Menu główne</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">ukryj</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Nawigacja </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikipedia:Strona_g%C5%82%C3%B3wna" title="Przejdź na stronę główną [z]" accesskey="z"><span>Strona główna</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Specjalna:Losowa_strona" title="Załaduj losową stronę [x]" accesskey="x"><span>Losuj artykuł</span></a></li><li id="n-Kategorie" class="mw-list-item"><a href="/wiki/Portal:Kategorie_G%C5%82%C3%B3wne"><span>Kategorie artykułów</span></a></li><li id="n-Featured-articles" class="mw-list-item"><a href="/wiki/Wikipedia:Wyr%C3%B3%C5%BCniona_zawarto%C5%9B%C4%87_Wikipedii"><span>Najlepsze artykuły</span></a></li><li id="n-FAQ" class="mw-list-item"><a href="/wiki/Pomoc:FAQ"><span>Częste pytania (FAQ)</span></a></li> </ul> </div> </div> <div id="p-zmiany" class="vector-menu mw-portlet mw-portlet-zmiany" > <div class="vector-menu-heading"> Dla czytelników </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-czytelnicy" class="mw-list-item"><a href="/wiki/Wikipedia:O_Wikipedii"><span>O Wikipedii</span></a></li><li id="n-contact" class="mw-list-item"><a href="/wiki/Wikipedia:Kontakt_z_wikipedystami"><span>Kontakt</span></a></li> </ul> </div> </div> <div id="p-edytorzy" class="vector-menu mw-portlet mw-portlet-edytorzy" > <div class="vector-menu-heading"> Dla wikipedystów </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-pierwsze-kroki" class="mw-list-item"><a href="/wiki/Pomoc:Pierwsze_kroki"><span>Pierwsze kroki</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Portal_wikipedyst%C3%B3w" title="O projekcie – co możesz zrobić, gdzie możesz znaleźć informacje"><span>Portal wikipedystów</span></a></li><li id="n-Noticeboard" class="mw-list-item"><a href="/wiki/Wikipedia:Tablica_og%C5%82osze%C5%84"><span>Ogłoszenia</span></a></li><li id="n-Guidelines" class="mw-list-item"><a href="/wiki/Wikipedia:Zasady"><span>Zasady</span></a></li><li id="n-helppage-name" class="mw-list-item"><a href="/wiki/Pomoc:Spis_tre%C5%9Bci"><span>Pomoc</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Specjalna:Ostatnie_zmiany" title="Lista ostatnich zmian w Wikipedii. [r]" accesskey="r"><span>Ostatnie zmiany</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Wikipedia:Strona_g%C5%82%C3%B3wna" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="wolna encyklopedia" src="/static/images/mobile/copyright/wikipedia-tagline-pl.svg" width="120" height="13" style="width: 7.5em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Specjalna:Szukaj" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Przeszukaj Wikipedię [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Szukaj</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Przeszukaj Wikipedię" aria-label="Przeszukaj Wikipedię" autocapitalize="sentences" title="Przeszukaj Wikipedię [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Specjalna:Szukaj"> </div> <button class="cdx-button cdx-search-input__end-button">Szukaj</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Narzędzia osobiste"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Wygląd"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Zmień rozmiar czcionki, szerokość oraz kolorystykę strony" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Wygląd" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Wygląd</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_pl.wikipedia.org&amp;uselang=pl" class=""><span>Wspomóż Wikipedię</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Specjalna:Utw%C3%B3rz_konto&amp;returnto=WebSocket" title="Zachęcamy do stworzenia konta i zalogowania, ale nie jest to obowiązkowe." class=""><span>Utwórz konto</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Specjalna:Zaloguj&amp;returnto=WebSocket" title="Zachęcamy do zalogowania się, choć nie jest to obowiązkowe. [o]" accesskey="o" class=""><span>Zaloguj się</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Więcej opcji" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Narzędzia osobiste" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Narzędzia osobiste</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menu użytkownika" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_pl.wikipedia.org&amp;uselang=pl"><span>Wspomóż Wikipedię</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Specjalna:Utw%C3%B3rz_konto&amp;returnto=WebSocket" title="Zachęcamy do stworzenia konta i zalogowania, ale nie jest to obowiązkowe."><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Utwórz konto</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Specjalna:Zaloguj&amp;returnto=WebSocket" title="Zachęcamy do zalogowania się, choć nie jest to obowiązkowe. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Zaloguj się</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Strony dla anonimowych edytorów <a href="/wiki/Pomoc:Pierwsze_kroki" aria-label="Dowiedz się więcej na temat edytowania"><span>dowiedz się więcej</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Specjalna:M%C3%B3j_wk%C5%82ad" title="Lista edycji wykonanych z tego adresu IP [y]" accesskey="y"><span>Edycje</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Specjalna:Moja_dyskusja" title="Dyskusja użytkownika dla tego adresu IP [n]" accesskey="n"><span>Dyskusja</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Witryna"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Spis treści" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Spis treści</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">ukryj</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Początek</div> </a> </li> <li id="toc-Historia" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Historia"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Historia</span> </div> </a> <ul id="toc-Historia-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przeglądarki_wspierające_WebSocket" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Przeglądarki_wspierające_WebSocket"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Przeglądarki wspierające WebSocket</span> </div> </a> <ul id="toc-Przeglądarki_wspierające_WebSocket-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przykładowy_klient_w_języku_javaScript" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Przykładowy_klient_w_języku_javaScript"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Przykładowy klient w języku javaScript</span> </div> </a> <ul id="toc-Przykładowy_klient_w_języku_javaScript-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Handshake_protokołu" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Handshake_protokołu"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Handshake protokołu</span> </div> </a> <ul id="toc-Handshake_protokołu-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Zobacz_też" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Zobacz_też"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Zobacz też</span> </div> </a> <ul id="toc-Zobacz_też-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Przypisy" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Przypisy"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Przypisy</span> </div> </a> <ul id="toc-Przypisy-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Spis treści" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Przełącz stan spisu treści" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Przełącz stan spisu treści</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">WebSocket</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Przejdź do artykułu w innym języku. Treść dostępna w 27 językach" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-27" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">27 języków</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%85%D9%82%D8%A8%D8%B3_%D9%88%D9%8A%D8%A8" title="مقبس ويب – arabski" lang="ar" hreflang="ar" data-title="مقبس ويب" data-language-autonym="العربية" data-language-local-name="arabski" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-zh-min-nan mw-list-item"><a href="https://zh-min-nan.wikipedia.org/wiki/WebSocket" title="WebSocket – minnański" lang="nan" hreflang="nan" data-title="WebSocket" data-language-autonym="閩南語 / Bân-lâm-gú" data-language-local-name="minnański" class="interlanguage-link-target"><span>閩南語 / Bân-lâm-gú</span></a></li><li class="interlanguage-link interwiki-bg mw-list-item"><a href="https://bg.wikipedia.org/wiki/WebSocket" title="WebSocket – bułgarski" lang="bg" hreflang="bg" data-title="WebSocket" data-language-autonym="Български" data-language-local-name="bułgarski" class="interlanguage-link-target"><span>Български</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/WebSocket" title="WebSocket – kataloński" lang="ca" hreflang="ca" data-title="WebSocket" data-language-autonym="Català" data-language-local-name="kataloński" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/WebSocket" title="WebSocket – czeski" lang="cs" hreflang="cs" data-title="WebSocket" data-language-autonym="Čeština" data-language-local-name="czeski" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/WebSocket" title="WebSocket – niemiecki" lang="de" hreflang="de" data-title="WebSocket" data-language-autonym="Deutsch" data-language-local-name="niemiecki" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-et mw-list-item"><a href="https://et.wikipedia.org/wiki/WebSocket" title="WebSocket – estoński" lang="et" hreflang="et" data-title="WebSocket" data-language-autonym="Eesti" data-language-local-name="estoński" class="interlanguage-link-target"><span>Eesti</span></a></li><li class="interlanguage-link interwiki-el mw-list-item"><a href="https://el.wikipedia.org/wiki/WebSocket" title="WebSocket – grecki" lang="el" hreflang="el" data-title="WebSocket" data-language-autonym="Ελληνικά" data-language-local-name="grecki" class="interlanguage-link-target"><span>Ελληνικά</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/WebSocket" title="WebSocket – angielski" lang="en" hreflang="en" data-title="WebSocket" data-language-autonym="English" data-language-local-name="angielski" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/WebSocket" title="WebSocket – hiszpański" lang="es" hreflang="es" data-title="WebSocket" data-language-autonym="Español" data-language-local-name="hiszpański" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%88%D8%A8%E2%80%8C%D8%B3%D9%88%DA%A9%D8%AA" title="وب‌سوکت – perski" lang="fa" hreflang="fa" data-title="وب‌سوکت" data-language-autonym="فارسی" data-language-local-name="perski" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/WebSocket" title="WebSocket – francuski" lang="fr" hreflang="fr" data-title="WebSocket" data-language-autonym="Français" data-language-local-name="francuski" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%9B%B9%EC%86%8C%EC%BC%93" title="웹소켓 – koreański" lang="ko" hreflang="ko" data-title="웹소켓" data-language-autonym="한국어" data-language-local-name="koreański" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/WebSocket" title="WebSocket – ormiański" lang="hy" hreflang="hy" data-title="WebSocket" data-language-autonym="Հայերեն" data-language-local-name="ormiański" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-id mw-list-item"><a href="https://id.wikipedia.org/wiki/WebSocket" title="WebSocket – indonezyjski" lang="id" hreflang="id" data-title="WebSocket" data-language-autonym="Bahasa Indonesia" data-language-local-name="indonezyjski" class="interlanguage-link-target"><span>Bahasa Indonesia</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/WebSocket" title="WebSocket – włoski" lang="it" hreflang="it" data-title="WebSocket" data-language-autonym="Italiano" data-language-local-name="włoski" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/WebSocket" title="WebSocket – węgierski" lang="hu" hreflang="hu" data-title="WebSocket" data-language-autonym="Magyar" data-language-local-name="węgierski" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-ms mw-list-item"><a href="https://ms.wikipedia.org/wiki/WebSocket" title="WebSocket – malajski" lang="ms" hreflang="ms" data-title="WebSocket" data-language-autonym="Bahasa Melayu" data-language-local-name="malajski" class="interlanguage-link-target"><span>Bahasa Melayu</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/WebSocket" title="WebSocket – niderlandzki" lang="nl" hreflang="nl" data-title="WebSocket" data-language-autonym="Nederlands" data-language-local-name="niderlandzki" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/WebSocket" title="WebSocket – japoński" lang="ja" hreflang="ja" data-title="WebSocket" data-language-autonym="日本語" data-language-local-name="japoński" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/WebSocket" title="WebSocket – portugalski" lang="pt" hreflang="pt" data-title="WebSocket" data-language-autonym="Português" data-language-local-name="portugalski" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/WebSocket" title="WebSocket – rosyjski" lang="ru" hreflang="ru" data-title="WebSocket" data-language-autonym="Русский" data-language-local-name="rosyjski" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Websocket" title="Websocket – szwedzki" lang="sv" hreflang="sv" data-title="Websocket" data-language-autonym="Svenska" data-language-local-name="szwedzki" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/WebSocket" title="WebSocket – turecki" lang="tr" hreflang="tr" data-title="WebSocket" data-language-autonym="Türkçe" data-language-local-name="turecki" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/WebSocket" title="WebSocket – ukraiński" lang="uk" hreflang="uk" data-title="WebSocket" data-language-autonym="Українська" data-language-local-name="ukraiński" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/WebSocket" title="WebSocket – wietnamski" lang="vi" hreflang="vi" data-title="WebSocket" data-language-autonym="Tiếng Việt" data-language-local-name="wietnamski" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/WebSocket" title="WebSocket – chiński" lang="zh" hreflang="zh" data-title="WebSocket" data-language-autonym="中文" data-language-local-name="chiński" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q859938#sitelinks-wikipedia" title="Edytuj linki pomiędzy wersjami językowymi" class="wbc-editpage">Edytuj linki</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Przestrzenie nazw"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/WebSocket" title="Zobacz stronę treści [c]" accesskey="c"><span>Artykuł</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Dyskusja:WebSocket" rel="discussion" title="Dyskusja o zawartości tej strony [t]" accesskey="t"><span>Dyskusja</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Zmień wariant języka" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">polski</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Widok"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/WebSocket"><span>Czytaj</span></a></li><li id="ca-ve-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=WebSocket&amp;veaction=edit" title="Edytuj tę stronę [v]" accesskey="v"><span>Edytuj</span></a></li><li id="ca-edit" class="collapsible vector-tab-noicon mw-list-item"><a href="/w/index.php?title=WebSocket&amp;action=edit" title="Edycja kodu źródłowego strony [e]" accesskey="e"><span>Edytuj kod źródłowy</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=WebSocket&amp;action=history" title="Starsze wersje tej strony [h]" accesskey="h"><span>Wyświetl historię</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Narzędzia dla stron"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Narzędzia" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Narzędzia</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Narzędzia</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">ukryj</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Więcej opcji" > <div class="vector-menu-heading"> Działania </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/WebSocket"><span>Czytaj</span></a></li><li id="ca-more-ve-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=WebSocket&amp;veaction=edit" title="Edytuj tę stronę [v]" accesskey="v"><span>Edytuj</span></a></li><li id="ca-more-edit" class="collapsible vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=WebSocket&amp;action=edit" title="Edycja kodu źródłowego strony [e]" accesskey="e"><span>Edytuj kod źródłowy</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=WebSocket&amp;action=history"><span>Wyświetl historię</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Ogólne </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Specjalna:Linkuj%C4%85ce/WebSocket" title="Pokaż listę wszystkich stron linkujących do tej strony [j]" accesskey="j"><span>Linkujące</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Specjalna:Zmiany_w_linkowanych/WebSocket" rel="nofollow" title="Ostatnie zmiany w stronach, do których ta strona linkuje [k]" accesskey="k"><span>Zmiany w linkowanych</span></a></li><li id="t-upload" class="mw-list-item"><a href="//pl.wikipedia.org/wiki/Wikipedia:Prześlij_plik" title="Prześlij pliki [u]" accesskey="u"><span>Prześlij plik</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Specjalna:Strony_specjalne" title="Lista wszystkich stron specjalnych [q]" accesskey="q"><span>Strony specjalne</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=WebSocket&amp;oldid=69867076" title="Stały link do tej wersji tej strony"><span>Link do tej wersji</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=WebSocket&amp;action=info" title="Więcej informacji na temat tej strony"><span>Informacje o tej stronie</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Cytuj&amp;page=WebSocket&amp;id=69867076&amp;wpFormIdentifier=titleform" title="Informacja o tym jak należy cytować tę stronę"><span>Cytowanie tego artykułu</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Skr%C3%B3%C4%87_adres_URL&amp;url=https%3A%2F%2Fpl.wikipedia.org%2Fwiki%2FWebSocket"><span>Zobacz skrócony adres URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Kod_QR&amp;url=https%3A%2F%2Fpl.wikipedia.org%2Fwiki%2FWebSocket"><span>Pobierz kod QR</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Drukuj lub eksportuj </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Specjalna:Ksi%C4%85%C5%BCka&amp;bookcmd=book_creator&amp;referer=WebSocket"><span>Utwórz książkę</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Specjalna:DownloadAsPdf&amp;page=WebSocket&amp;action=show-download-screen"><span>Pobierz jako PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=WebSocket&amp;printable=yes" title="Wersja do wydruku [p]" accesskey="p"><span>Wersja do druku</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> W innych projektach </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q859938" title="Link do powiązanego elementu w repozytorium danych [g]" accesskey="g"><span>Element Wikidanych</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Narzędzia dla stron"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Wygląd"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Wygląd</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">przypnij</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">ukryj</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">Z Wikipedii, wolnej encyklopedii</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="pl" dir="ltr"><table class="infobox"> <caption class="naglowek"><style data-mw-deduplicate="TemplateStyles:r65781301">.mw-parser-output .infobox>caption>.iboxt-flex{display:flex;justify-content:flex-start;align-items:center;gap:4px}.mw-parser-output .infobox>caption>.iboxt-flex>.iboxt-ikona{flex-grow:0;flex-shrink:0;font-size:7px;max-width:40px;overflow:hidden}.mw-parser-output .infobox>caption>.iboxt-flex>.iboxt-tekst{flex-grow:1}.mw-parser-output .infobox>caption .iboxt-1{font-weight:bold}.mw-parser-output .infobox>caption .iboxt-2{font-style:italic}.mw-parser-output .infobox>caption .iboxt-3{font-style:italic;font-size:90%}</style><div class="iboxt-1">WebSocket</div> </caption> <tbody><tr> <th>Platforma sprzętowa </th> <td><a href="/wiki/Wieloplatformowo%C5%9B%C4%87" title="Wieloplatformowość">wieloplatformowy</a> </td></tr> <tr> <th>Rodzaj </th> <td><a href="/wiki/Protok%C3%B3%C5%82_komunikacyjny" title="Protokół komunikacyjny">Protokół komunikacyjny</a> </td></tr> <tr> <th>Licencja </th> <td><a href="/wiki/Licencje_BSD" title="Licencje BSD">2-klauzulowa licencja BSD</a> </td></tr> <tr class="noprint plainlinks" style="border-top:1px solid var(--border-color-base, #a2a9b1); text-align:center;"> <td colspan="2" style="padding:0;"> <table cellpadding="4" cellspacing="0" style="width:100%; margin:0px; background:var(--background-color-base, #fff); color:inherit"> <tbody><tr> <td style="vertical-align:middle; width:30px;"><span typeof="mw:File"><a href="https://commons.wikimedia.org/wiki/Category:WebSocket" title="Commons"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/21px-Commons-logo.svg.png" decoding="async" width="21" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/31px-Commons-logo.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/42px-Commons-logo.svg.png 2x" data-file-width="1024" data-file-height="1376" /></a></span> </td> <td style="vertical-align:middle;"><a href="https://commons.wikimedia.org/wiki/Category:WebSocket" class="extiw" title="commons:Category:WebSocket">Multimedia w Wikimedia Commons</a> </td></tr></tbody></table> </td></tr> <tr style="background:#EAECF0; color:black;"> <td colspan="2" class="naglowek" style="text-align:center; border-top: 1px solid var(--border-color-base, #a2a9b1)"><a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/rfc6455">Strona internetowa</a> </td></tr> </tbody></table> <p><b>WebSocket</b> – jest <a href="/wiki/Protok%C3%B3%C5%82_komunikacyjny" title="Protokół komunikacyjny">protokołem komunikacyjnym</a>, zapewniającym dwukierunkowy kanał wymiany danych poprzez pojedyncze połączenie <a href="/wiki/Model_TCP/IP" title="Model TCP/IP">TCP</a>. Protokół WebSockets został ustandaryzowany przez IETF jako RFC 6455 w 2011 roku<sup id="cite_ref-1" class="reference"><a href="#cite_note-1">[1]</a></sup>, a jego przeglądarkowe API podlega standaryzacji w <a href="/wiki/World_Wide_Web_Consortium" title="World Wide Web Consortium">W3C</a>. </p><p>WebSockets różni się od protokołu HTTP. Oba protokoły są zlokalizowane na 7 warstwie w <a href="/wiki/Model_OSI" title="Model OSI">modelu OSI</a> i zależą od TCP na warstwie 4. Pomimo faktu, że są one różne, standard RFC 6455 mówi, że WebSocket został zaprojektowany do działania na portach 80 i 443 przypisanych do HTTP, a także ma wspierać funkcje proxy i pośredników (intermediaries). Aby osiągnąć kompatybilność z HTTP, handshake WebSocket’u wykorzystuje nagłówek HTTP Upgrade<sup id="cite_ref-2" class="reference"><a href="#cite_note-2">[2]</a></sup>, aby przełączyć komunikację z protokołu HTTP na WebSockets. </p><p>Protokół WebSocket umożliwia interakcję między przeglądarką internetową (lub inną aplikacją kliencką), a serwerem sieciowym przy niższym obciążeniu niż alternatywne rozwiązania <a href="/wiki/Dupleks_(telekomunikacja)" title="Dupleks (telekomunikacja)">półdupleksowe</a>, takie jak np. odpytywanie HTTP (polling), ułatwiając przy tym znacznie przesyłanie danych w czasie rzeczywistym do i z serwera. Jest to możliwe dzięki zapewnieniu znormalizowanego sposobu wysyłania przez serwer treści do klienta bez uprzedniego żądania klienta i umożliwienia przesyłania komunikatów tam i z powrotem przy zachowaniu aktywnego połączenia. W ten sposób między klientem, a serwerem może odbywać się dwukierunkowa wymiana danych. Komunikacja odbywa się zwykle przez port TCP o numerze 443 (lub 80 w przypadku połączeń niezabezpieczonych), co jest korzystne w środowiskach, które blokują połączenia dla aplikacji innych niż przeglądarki internetowe (np. klienty Torrent, IRC). Przed pojawieniem się WebSocket’ów podobną dwukierunkową komunikację przeglądarka-serwer osiągano w niestandardowy sposób, wykorzystując technologie takie jak Comet czy <a href="/wiki/Adobe_Flash_Player" title="Adobe Flash Player">Adobe Flash Player</a><sup id="cite_ref-3" class="reference"><a href="#cite_note-3">[3]</a></sup>. </p><p>Większość współczesnych przeglądarek obsługuje WebSocket’y, w tym m.in.: <a href="/wiki/Google_Chrome" title="Google Chrome">Google Chrome</a>, <a href="/wiki/Firefox" title="Firefox">Firefox</a>, <a href="/wiki/Microsoft_Edge" title="Microsoft Edge">Microsoft Edge</a>, <a href="/wiki/Internet_Explorer" title="Internet Explorer">Internet Explorer</a>, <a href="/wiki/Safari_(przegl%C4%85darka)" title="Safari (przeglądarka)">Safari</a> i <a href="/wiki/Opera_(przegl%C4%85darka)" title="Opera (przeglądarka)">Opera</a><sup id="cite_ref-4" class="reference"><a href="#cite_note-4">[4]</a></sup>. </p><p>W przeciwieństwie do protokołu HTTP, WebSocket zapewnia komunikację w pełnym <a href="/wiki/Dupleks_(telekomunikacja)" title="Dupleks (telekomunikacja)">dupleksie</a>. Dodatkowo WebSocket umożliwia przesyłanie wiadomości na wierzchu protokołu TCP. Sam protokół TCP obsługuje strumienie bajtów bez wbudowanej koncepcji wiadomości. Przed WebSocket komunikacja na porcie 80 w pełnym dupleksie była osiągalna przy użyciu kanałów Comet, jednak implementacja Comet nie jest trywialna, a ze względu na uzgadnianie TCP i obciążenie nagłówka HTTP jest nieefektywna w przypadku małych wiadomości. Protokół WebSocket ma na celu rozwiązanie tych problemów bez naruszania założeń bezpieczeństwa sieci. </p><p>Specyfikacja protokołu WebSocket definiuje <code>ws</code> (WebSocket) i <code>wss</code> (WebSocket Secure) jako dwa nowe schematy <a href="/wiki/Uniform_Resource_Identifier" title="Uniform Resource Identifier">jednolitego identyfikatora zasobów</a> (URI), które są używane odpowiednio do połączeń nieszyfrowanych i szyfrowanych<sup id="cite_ref-5" class="reference"><a href="#cite_note-5">[5]</a></sup>. Oprócz nazwy schematu i fragmentu (tj. # nie jest obsługiwany), pozostałe komponenty URI są zdefiniowane tak, aby używały ogólnej składni URI<sup id="cite_ref-6" class="reference"><a href="#cite_note-6">[6]</a></sup>. </p><p>Wykorzystując narzędzia developera w przeglądarce, twórcy stron mogą sprawdzić zarówno handshake WebSocket’u, jak i poszczególne paczki (frames)<sup id="cite_ref-7" class="reference"><a href="#cite_note-7">[7]</a></sup>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Historia">Historia</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=WebSocket&amp;veaction=edit&amp;section=1" title="Edytuj sekcję: Historia" class="mw-editsection-visualeditor"><span>edytuj</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=WebSocket&amp;action=edit&amp;section=1" title="Edytuj kod źródłowy sekcji: Historia"><span>edytuj kod</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>WebSocket’y zostały po raz pierwszy wymienione jako TCPConnection w bazowej specyfikacji <a href="/wiki/HTML5" title="HTML5">HTML5</a>, jako symbol zastępczy dla <a href="/wiki/Interfejs_programowania_aplikacji" title="Interfejs programowania aplikacji">interfejsu</a> (API) gniazda, opartego o protokół <a href="/wiki/Model_TCP/IP" title="Model TCP/IP">TCP</a><sup id="cite_ref-8" class="reference"><a href="#cite_note-8">[8]</a></sup>. W czerwcu 2008 roku Michael Carter przeprowadził serię dyskusji w wyniku których powstała pierwsza wersja protokołu znanego obecnie jako WebSocket<sup id="cite_ref-9" class="reference"><a href="#cite_note-9">[9]</a></sup>. </p><p>Nazwa „WebSocket” została ukuta przez Iana Hicksona i Michaela Cartera podczas współpracy na kanale IRC #whatwg<sup id="cite_ref-10" class="reference"><a href="#cite_note-10">[10]</a></sup>, a następnie włączona do specyfikacji HTML5 przez samego Hicksona. W grudniu 2009 r. Google Chrome 4 została pierwszą przeglądarką z pełną obsługą nowego standardu, z domyślnie włączonym API WebSocket<sup id="cite_ref-11" class="reference"><a href="#cite_note-11">[11]</a></sup>. Rozwój protokołu WebSocket został następnie przeniesiony z grup <a href="/wiki/World_Wide_Web_Consortium" title="World Wide Web Consortium">W3C</a> i <a href="/wiki/Web_Hypertext_Application_Technology_Working_Group" title="Web Hypertext Application Technology Working Group">WHATWG</a> do <a href="/wiki/Internet_Engineering_Task_Force" title="Internet Engineering Task Force">IETF</a> w lutym 2010. </p><p>Po zakończeniu prac nad protokołem i jego domyślnym włączeniu w większości przeglądarek, standard RFC 6455 został sfinalizowany przez Iana Fettera w grudniu 2011 roku. </p><p>RFC 7692 wprowadził rozszerzenie kompresji wiadomości do WebSocket przy użyciu algorytmu DEFLATE. </p> <div class="mw-heading mw-heading2"><h2 id="Przeglądarki_wspierające_WebSocket"><span id="Przegl.C4.85darki_wspieraj.C4.85ce_WebSocket"></span>Przeglądarki wspierające WebSocket</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=WebSocket&amp;veaction=edit&amp;section=2" title="Edytuj sekcję: Przeglądarki wspierające WebSocket" class="mw-editsection-visualeditor"><span>edytuj</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=WebSocket&amp;action=edit&amp;section=2" title="Edytuj kod źródłowy sekcji: Przeglądarki wspierające WebSocket"><span>edytuj kod</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>WebSocket został zaimplementowany w przeglądarkach: <a href="/wiki/Firefox" title="Firefox">Firefox</a> 4, <a href="/wiki/Google_Chrome" title="Google Chrome">Google Chrome</a> 4, <a href="/wiki/Opera_(przegl%C4%85darka)" title="Opera (przeglądarka)">Opera</a> 11, <a href="/wiki/Internet_Explorer" title="Internet Explorer">Internet Explorer</a> 10 oraz Safari 5 (również w mobilnym Safari dla <a href="/wiki/IOS" title="IOS">iOS</a> 4.2). Z powodu luk w zabezpieczeniach WebSocket został domyślnie wyłączony w Firefoksie 4 i Operze 11 do czasu ich naprawienia<sup id="cite_ref-12" class="reference"><a href="#cite_note-12">[12]</a></sup><sup id="cite_ref-13" class="reference"><a href="#cite_note-13">[13]</a></sup>. Aktualnie wszystkie najpopularniejsze przeglądarki wspierają tę technologię<sup id="cite_ref-14" class="reference"><a href="#cite_note-14">[14]</a></sup>. </p> <table class="wikitable"> <caption>Implementacja WebSocket w przeglądarkach internetowych </caption> <tbody><tr> <th>Protokół, wersja </th> <th>Data konspektu </th> <th>Internet Explorer </th> <th>Firefox (PC) </th> <th>Firefox (Android) </th> <th>Chrome (PC, iOS, Android) </th> <th>Safari (Mac, iOS) </th> <th>Opera (PC, Android, iOS) </th> <th>Android Browser </th></tr> <tr> <th>hixie-75 </th> <td>4 Luty, 2010 </td> <td> </td> <td> </td> <td> </td> <td>4 </td> <td>5.0.0 </td> <td> </td> <td> </td></tr> <tr> <th>hixie-76 <p>hybi-00 </p> </th> <td>6 Maj, 2010 <p>23 Maj, 2010 </p> </td> <td> </td> <td>4.0 (wyłączono) </td> <td> </td> <td>6 </td> <td>5.0.1 </td> <td>11.00 (wyłączono) </td> <td> </td></tr> <tr> <th>hybi-07 </th> <td>22 kwietnia 2011 </td> <td> </td> <td>6<sup id="cite_ref-ietf-07_15-0" class="reference"><a href="#cite_note-ietf-07-15">[15]</a></sup> </td> <td> </td> <td> </td> <td> </td> <td> </td> <td> </td></tr> <tr> <th>hybi-10 </th> <td>11 lipca 2011 </td> <td> </td> <td>7<sup id="cite_ref-ietf-07_15-1" class="reference"><a href="#cite_note-ietf-07-15">[15]</a></sup> </td> <td>7 </td> <td>14<sup id="cite_ref-16" class="reference"><a href="#cite_note-16">[16]</a></sup> </td> <td> </td> <td> </td> <td> </td></tr> <tr> <th>RFC 6455 </th> <td>Grudzień 2011 </td> <td>10 </td> <td>11 </td> <td>11 </td> <td>16 </td> <td>6 </td> <td>12.10<sup id="cite_ref-17" class="reference"><a href="#cite_note-17">[17]</a></sup> </td> <td>4.4 </td></tr></tbody></table> <div class="mw-heading mw-heading2"><h2 id="Przykładowy_klient_w_języku_javaScript"><span id="Przyk.C5.82adowy_klient_w_j.C4.99zyku_javaScript"></span>Przykładowy klient w języku javaScript</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=WebSocket&amp;veaction=edit&amp;section=3" title="Edytuj sekcję: Przykładowy klient w języku javaScript" class="mw-editsection-visualeditor"><span>edytuj</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=WebSocket&amp;action=edit&amp;section=3" title="Edytuj kod źródłowy sekcji: Przykładowy klient w języku javaScript"><span>edytuj kod</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="c1">// stworzenie nowego obiektu typu WebSocket</span> <span class="kd">const</span><span class="w"> </span><span class="nx">socket</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">WebSocket</span><span class="p">(</span><span class="s1">&#39;ws://game.example.com:12010/updates&#39;</span><span class="p">);</span> <span class="c1">// metoda wywoływana w momencie stworzenia socketu</span> <span class="nx">socket</span><span class="p">.</span><span class="nx">onopen</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nx">setInterval</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">socket</span><span class="p">.</span><span class="nx">bufferedAmount</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mf">0</span><span class="p">)</span> <span class="w"> </span><span class="nx">socket</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">getUpdateData</span><span class="p">());</span> <span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="mf">50</span><span class="p">);</span> <span class="p">};</span> <span class="c1">// metoda wywoływana w momencie otrzymania wiadomości</span> <span class="nx">socket</span><span class="p">.</span><span class="nx">onmessage</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nx">handleUpdateData</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span> <span class="p">};</span> <span class="c1">// metoda wywoływana w momencie zamknięcia gniazda</span> <span class="nx">socket</span><span class="p">.</span><span class="nx">onclose</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nx">onSocketClose</span><span class="p">(</span><span class="nx">event</span><span class="p">);</span> <span class="p">};</span> <span class="c1">// metoda wywoływana w momencie, gdy socket został zamknięty z powodu błędu</span> <span class="nx">socket</span><span class="p">.</span><span class="nx">onerror</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="nx">onSocketError</span><span class="p">(</span><span class="nx">event</span><span class="p">);</span> <span class="p">};</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Handshake_protokołu"><span id="Handshake_protoko.C5.82u"></span>Handshake protokołu</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=WebSocket&amp;veaction=edit&amp;section=4" title="Edytuj sekcję: Handshake protokołu" class="mw-editsection-visualeditor"><span>edytuj</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=WebSocket&amp;action=edit&amp;section=4" title="Edytuj kod źródłowy sekcji: Handshake protokołu"><span>edytuj kod</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Aby ustanowić połączenie typu WebSocket, klient musi najpierw wysłać żądanie typu <a href="/wiki/Handshake" title="Handshake">handshake</a>, dla którego serwer zwraca odpowiednią odpowiedź, jak pokazane jest to w przykładzie poniżej<sup id="cite_ref-18" class="reference"><a href="#cite_note-18">[18]</a></sup>. </p><p>Zarówno w żądaniu klienta, jak i odpowiedzi serwera każda linia wiadomości kończy się znakiem nowej linii (<code>\r\n</code>) – identycznie jak ma to miejsce w przypadku protokołu <a href="/wiki/Hypertext_Transfer_Protocol" class="mw-redirect" title="Hypertext Transfer Protocol">HTTP</a>. Dodatkowo na samym końcu żądania/odpowiedzi musi znajdować się pusta linia. </p><p>Żądanie klienta: </p> <div class="mw-highlight mw-highlight-lang-http mw-content-ltr" dir="ltr"><pre><span></span><span class="nf">GET</span> <span class="nn">/chat</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="na">Host</span><span class="o">:</span> <span class="l">server.example.com</span> <span class="na">Upgrade</span><span class="o">:</span> <span class="l">websocket</span> <span class="na">Connection</span><span class="o">:</span> <span class="l">Upgrade</span> <span class="na">Sec-WebSocket-Key</span><span class="o">:</span> <span class="l">x3JJHMbDL1EzLkh9GBhXDw==</span> <span class="na">Sec-WebSocket-Protocol</span><span class="o">:</span> <span class="l">chat, superchat</span> <span class="na">Sec-WebSocket-Version</span><span class="o">:</span> <span class="l">13</span> <span class="na">Origin</span><span class="o">:</span> <span class="l">http://example.com</span> </pre></div> <p>Odpowiedź serwera: </p> <div class="mw-highlight mw-highlight-lang-http mw-content-ltr" dir="ltr"><pre><span></span><span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span> <span class="m">101</span> <span class="ne">Switching Protocols</span> <span class="na">Upgrade</span><span class="o">:</span> <span class="l">websocket</span> <span class="na">Connection</span><span class="o">:</span> <span class="l">Upgrade</span> <span class="na">Sec-WebSocket-Accept</span><span class="o">:</span> <span class="l">HSmrc0sMlYUkAGmm5OPpG2HaGWk=</span> <span class="na">Sec-WebSocket-Protocol</span><span class="o">:</span> <span class="l">chat</span> </pre></div><p>Handshake rozpoczyna się od żądania/odpowiedzi HTTP, dzięki czemu dany serwer może obsługiwać połączenia HTTP, a także WebSocket na tym samym porcie. Po nawiązaniu połączenia komunikacja przełącza się na dwukierunkowy protokół binarny, który nie jest już zgodny z protokołem HTTP. </p><p>Oprócz nagłówka <code>Upgrade</code> klient wysyła również nagłówek <code>Sec-WebSocket-Key</code> zawierający losowe bajty zakodowane w standardzie <a href="/wiki/Base64" title="Base64">base64</a>, na co serwer odpowiada, podając hash tego klucza w nagłówku <code>Sec-WebSocket-Accept</code>. Ma to na celu zapobieganie sytuacji, gdzie np. serwer/proxy buforujący wyśle ponownie całą zapisaną konwersację innemu klientowi, podczas gdy ten nie miał de facto styczności z właściwym serwerem<sup id="cite_ref-19" class="reference"><a href="#cite_note-19">[19]</a></sup>. Proces polega na tym, że funkcja szyfrująca dodaje stały ciąg znaków <code>258EAFA5-E914-47DA-95CA-C5AB0DC85B11</code> do wartości podanej w nagłówku <code>Sec-WebSocket-Key</code> klienta (nie jest on dekodowany z base64), a następnie stosuje algorytm szyfrujący <a href="/wiki/SHA-1" title="SHA-1">SHA-1</a>, by na samym końcu zakodować uzyskaną wartość używając base64<sup id="cite_ref-20" class="reference"><a href="#cite_note-20">[20]</a></sup>. </p><p>Gdy połączenie jest już ustanowione, klient i serwer mogą wysyłać sobie dane w formie binarnej lub tekstowej w postaci tzw. ramek w trybie pełnego <a href="/wiki/Dupleks_(telekomunikacja)" title="Dupleks (telekomunikacja)">dupleksu</a>. Sama ramka ma niewielki narzut, dodając jedynie mały nagłówek, po którym znajdują się docelowe dane<sup id="cite_ref-21" class="reference"><a href="#cite_note-21">[21]</a></sup>. Transmisje WebSocket są opisywane jako „wiadomości”, w których pojedyncza wiadomość może być opcjonalnie podzielona na kilka ramek. Pozwala to na wysyłanie wiadomości, w których dostępne są dane początkowe, ale nie jest znana pełna długość wiadomości (wysyłane są jedna ramka danych za drugą, aż do osiągnięcia końca i zakończenia bitem FIN). Dzięki rozszerzeniom protokołu można to również wykorzystać do <a href="/wiki/Multipleksowanie" title="Multipleksowanie">multipleksowania</a> kilku strumieni jednocześnie (na przykład w celu uniknięcia monopolizowania użycia gniazda dla pojedynczego dużego ładunku)<sup id="cite_ref-22" class="reference"><a href="#cite_note-22">[22]</a></sup>. </p> <div class="mw-heading mw-heading2"><h2 id="Zobacz_też"><span id="Zobacz_te.C5.BC"></span>Zobacz też</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=WebSocket&amp;veaction=edit&amp;section=5" title="Edytuj sekcję: Zobacz też" class="mw-editsection-visualeditor"><span>edytuj</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=WebSocket&amp;action=edit&amp;section=5" title="Edytuj kod źródłowy sekcji: Zobacz też"><span>edytuj kod</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a></li> <li><a href="/wiki/Hypertext_Transfer_Protocol" class="mw-redirect" title="Hypertext Transfer Protocol">HTTP</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Przypisy">Przypisy</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=WebSocket&amp;veaction=edit&amp;section=6" title="Edytuj sekcję: Przypisy" class="mw-editsection-visualeditor"><span>edytuj</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=WebSocket&amp;action=edit&amp;section=6" title="Edytuj kod źródłowy sekcji: Przypisy"><span>edytuj kod</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="do-not-make-smaller refsection"><div class="mw-references-wrap mw-references-columns"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><cite class="citation doi" id="CITEREF&#82;FC_6455"><span class="cite-name-before"><span class="cite-name-full">I.</span><span class="cite-name-initials" style="display:none">I.</span>&#160;</span><span class="cite-lastname">Fette</span><span class="cite-name-after" style="display:none">&#160;<span class="cite-name-full">I.</span><span class="cite-name-initials">I.</span></span>, <span class="cite-name-before"><span class="cite-name-full">A.</span><span class="cite-name-initials" style="display:none">A.</span>&#160;</span><span class="cite-lastname">Melnikov</span><span class="cite-name-after" style="display:none">&#160;<span class="cite-name-full">A.</span><span class="cite-name-initials">A.</span></span>, <a rel="nofollow" class="external text" href="https://tools.ietf.org/html/rfc6455"><i>The WebSocket Protocol</i></a>, <a href="/wiki/Request_for_Comments" title="Request for Comments">RFC</a> 6455, <a href="/wiki/Internet_Engineering_Task_Force" title="Internet Engineering Task Force">IETF</a>, grudzień 2011, <a href="/wiki/DOI_(identyfikator_cyfrowy)" title="DOI (identyfikator cyfrowy)">DOI</a>:&#160;<a rel="nofollow" class="external text" href="https://dx.doi.org/10.17487%2FRFC6455">10.17487/RFC6455</a><span class="issn">, <a href="/wiki/International_Standard_Serial_Number" title="International Standard Serial Number">ISSN</a> <a rel="nofollow" class="external text" href="http://worldcat.org/issn/2070-1721">2070-1721</a></span>, <a href="/wiki/Online_Computer_Library_Center" title="Online Computer Library Center">OCLC</a>&#160;<a rel="nofollow" class="external text" href="http://worldcat.org/oclc/943595667">943595667</a><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft.aufirst=I.&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=The+WebSocket+Protocol&amp;rft.issn=2070-1721&amp;rft.date=2011-12&amp;rft.aulast=Fette&amp;rft_id=info%3Aoclcnum%2F943595667&amp;rft_id=info%3Adoi%2F10.17487%2F&#82;FC6455&amp;rft_id=https%3A%2F%2Ftools.ietf.org%2Fhtml%2Frfc6455" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/rfc6455#section-1.7"><i>rfc6455</i></a> [online], datatracker.ietf.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=rfc6455&amp;rft_id=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc6455%23section-1.7" style="display:none">&#160;</span>.</cite></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://help.adobe.com/en_US/as3/dev/WSb2ba3b1aad8a27b0-181c51321220efd9d1c-8000.html"><i>Adobe Flash Platform * Sockets</i></a> [online], help.adobe.com<span class="accessdate"> [dostęp 2021-07-28]</span>, Cytat: TCP connections require a “client” and a “server.” Flash Player can create client sockets.<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=Adobe+Flash+Platform+%2A+Sockets&amp;rft_id=https%3A%2F%2Fhelp.adobe.com%2Fen_US%2Fas3%2Fdev%2FWSb2ba3b1aad8a27b0-181c51321220efd9d1c-8000.html" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><a href="#cite_ref-4">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://developer.mozilla.org/pl/docs/Web/API/WebSockets_API"><i>WebSockets – Lista Web API &#x7c; MDN</i></a> [online], developer.mozilla.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=WebSockets+%E2%80%93+Lista+Web+API+%7C+MDN&amp;rft_id=https%3A%2F%2Fdeveloper.mozilla.org%2Fpl%2Fdocs%2FWeb%2FAPI%2FWebSockets_API" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml"><i>Uniform Resource Identifier (URI) Schemes</i></a> [online], www.iana.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=Uniform+Resource+Identifier+%28URI%29+Schemes&amp;rft_id=http%3A%2F%2Fwww.iana.org%2Fassignments%2Furi-schemes%2Furi-schemes.xhtml" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><cite class="citation web"><span class="cite-name-before"><span class="cite-name-full">Ian</span><span class="cite-name-initials" title="Ian" style="display:none">I.</span>&#160;</span><span class="cite-lastname">Fette</span><span class="cite-name-after" style="display:none">&#160;<span class="cite-name-full">Ian</span><span class="cite-name-initials" title="Ian">I.</span></span>, <a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/rfc6455#section-3"><i>rfc6455</i></a> [online], datatracker.ietf.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft.aufirst=Ian&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=rfc6455&amp;rft.aulast=Fette&amp;rft_id=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc6455%23section-3" style="display:none">&#160;</span>.</cite></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text"><cite class="citation book nourl"><i>APPENDIX A: WebSocket Frame Inspection with Google Chrome Developer Tools</i>, [w:] <span class="cite-name-before"><span class="cite-name-full">Vanessa</span><span class="cite-name-initials" title="Vanessa" style="display:none">V.</span>&#160;</span><span class="cite-lastname">Wang</span><span class="cite-name-after" style="display:none">&#160;<span class="cite-name-full">Vanessa</span><span class="cite-name-initials" title="Vanessa">V.</span></span>, <i>The Definitive Guide to HTML5 WebSocket</i>, Apress, <a href="/wiki/Specjalna:Ksi%C4%85%C5%BCki/9781430247401" title="Specjalna:Książki/9781430247401">ISBN&#160;<span class="isbn">978-1-4302-4740-1</span></a><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=bookitem&amp;rft.aufirst=Vanessa&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=The+Definitive+Guide+to+HTML5+WebSocket&amp;rft.isbn=978-1-4302-4740-1&amp;rft.atitle=APPENDIX+A%3A+WebSocket+Frame+Inspection+with+Google+Chrome+Developer+Tools&amp;rft.pub=Apress&amp;rft.aulast=Wang" style="display:none">&#160;</span>.</cite><span class="problemy" aria-hidden="true" data-nosnippet=""> Brak numerów stron w książce</span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://www.w3.org/TR/2008/WD-html5-20080610/comms.html#tcp-connections"><i>HTML 5</i></a> [online], www.w3.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=HTML+5&amp;rft_id=https%3A%2F%2Fwww.w3.org%2FTR%2F2008%2FWD-html5-20080610%2Fcomms.html%23tcp-connections" style="display:none">&#160;</span>.</cite></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://lists.w3.org/Archives/Public/public-whatwg-archive/2008Jun/0165.html"><i>&#x5b;whatwg&#x5d; TCPConnection feedback from Michael Carter on 2008-06-18 (whatwg@whatwg.org from June 2008)</i></a> [online], lists.w3.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=%5Bwhatwg%5D+TCPConnection+feedback+from+Michael+Carter+on+2008-06-18+%28whatwg%40whatwg.org+from+June+2008%29&amp;rft_id=https%3A%2F%2Flists.w3.org%2FArchives%2FPublic%2Fpublic-whatwg-archive%2F2008Jun%2F0165.html" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://krijnhoetmer.nl/irc-logs/whatwg/20080618.html"><i>IRC logs: freenode / #whatwg / 20080618</i></a> [online], krijnhoetmer.nl<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=IRC+logs%3A+freenode+%2F+%23whatwg+%2F+20080618&amp;rft_id=https%3A%2F%2Fkrijnhoetmer.nl%2Firc-logs%2Fwhatwg%2F20080618.html" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://blog.chromium.org/2009/12/web-sockets-now-available-in-google.html"><i>Web Sockets Now Available In Google Chrome</i></a> [online], Chromium Blog<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=Web+Sockets+Now+Available+In+Google+Chrome&amp;rft_id=https%3A%2F%2Fblog.chromium.org%2F2009%2F12%2Fweb-sockets-now-available-in-google.html" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/">Wpis na blogu Firefoksa dotyczący zablokowania WebSocket</a>.</span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20101215010748/http://my.opera.com/chooseopera/blog/2010/12/10/regarding-websocket">Wpis na blogu Opery dotyczący zablokowania WebSocket</a>.&#32;[dostęp 2010-12-15].&#32;[zarchiwizowane z <a rel="nofollow" class="external text" href="http://my.opera.com/chooseopera/blog/2010/12/10/regarding-websocket">tego adresu</a>&#32;(2010-12-15)].</cite></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><a href="#cite_ref-14">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="http://caniuse.com/websockets"><i>Can I use Web Sockets</i></a> [online], caniuse.com<span class="accessdate"> [dostęp 2017-11-15]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=Can+I+use+Web+Sockets&amp;rft_id=http%3A%2F%2Fcaniuse.com%2Fwebsockets" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-ietf-07-15"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-ietf-07_15-0">a</a></sup> <sup><a href="#cite_ref-ietf-07_15-1">b</a></sup></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=640003"><i>640003 – WebSockets – upgrade to ietf-07</i></a> [online], bugzilla.mozilla.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=640003+%E2%80%93+WebSockets+%E2%80%93+upgrade+to+ietf-07&amp;rft_id=https%3A%2F%2Fbugzilla.mozilla.org%2Fshow_bug.cgi%3Fid%3D640003" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://bugs.chromium.org/p/chromium/issues/detail?id=64470"><i>64470 – chromium – An open-source project to help move the web forward. – Monorail</i></a> [online], bugs.chromium.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=64470+%E2%80%93+chromium+%E2%80%93+An+open-source+project+to+help+move+the+web+forward.+%E2%80%93+Monorail&amp;rft_id=https%3A%2F%2Fbugs.chromium.org%2Fp%2Fchromium%2Fissues%2Fdetail%3Fid%3D64470" style="display:none">&#160;</span>.</cite></span> </li> <li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20120805234006/http://my.opera.com/ODIN/blog/2012/08/03/a-hot-opera-12-50-summer-time-snapshot"><i>Opera Developer News – A hot Opera 12.50 summer-time snapshot</i></a> [online], web.archive.org, 5 sierpnia 2012<span class="accessdate"> [dostęp 2021-07-28]</span> [zarchiwizowane z <a rel="nofollow" class="external text" href="http://my.opera.com/ODIN/blog/2012/08/03/a-hot-opera-12-50-summer-time-snapshot">adresu</a> 2012-08-05]<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft.date=2012-08-05&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=Opera+Developer+News+%E2%80%93+A+hot+Opera+12.50+summer-time+snapshot&amp;rft_id=http%3A%2F%2Fmy.opera.com%2FODIN%2Fblog%2F2012%2F08%2F03%2Fa-hot-opera-12-50-summer-time-snapshot" style="display:none">&#160;</span>.</cite></span> </li> <li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/rfc6455"><i>rfc6455</i></a> [online], datatracker.ietf.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=rfc6455&amp;rft_id=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc6455" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-19"><span class="mw-cite-backlink"><a href="#cite_ref-19">↑</a></span> <span class="reference-text"><cite class="citation web"><a rel="nofollow" class="external text" href="https://trac.ietf.org/trac/hybi/wiki/FAQ"><i>FAQ – BiDirectional or Server-Initiated HTTP Wiki</i></a> [online], trac.ietf.org<span class="accessdate"> [dostęp 2021-07-28]</span>, Cytat: The computation [...] is meant to prevent a caching intermediary from providing a WS-client with a cached WS-server reply without actual interaction with the WS-server<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=FAQ+%E2%80%93+BiDirectional+or+Server-Initiated+HTTP+Wiki&amp;rft_id=https%3A%2F%2Ftrac.ietf.org%2Ftrac%2Fhybi%2Fwiki%2FFAQ" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-20"><span class="mw-cite-backlink"><a href="#cite_ref-20">↑</a></span> <span class="reference-text"><cite class="citation book"><i>Opening Handshake</i>, [w:] <span class="cite-name-before"><span class="cite-name-full">Ian</span><span class="cite-name-initials" title="Ian" style="display:none">I.</span>&#160;</span><span class="cite-lastname">Fette</span><span class="cite-name-after" style="display:none">&#160;<span class="cite-name-full">Ian</span><span class="cite-name-initials" title="Ian">I.</span></span>, <a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/rfc6455#section-1.3"><i>rfc6455</i></a>, datatracker.ietf.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=bookitem&amp;rft.aufirst=Ian&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=rfc6455&amp;rft.atitle=Opening+Handshake&amp;rft.aulast=Fette&amp;rft_id=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc6455%23section-1.3" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-21"><span class="mw-cite-backlink"><a href="#cite_ref-21">↑</a></span> <span class="reference-text"><cite class="citation book"><i>Base Framing Protocol</i>, [w:] <span class="cite-name-before"><span class="cite-name-full">Ian</span><span class="cite-name-initials" title="Ian" style="display:none">I.</span>&#160;</span><span class="cite-lastname">Fette</span><span class="cite-name-after" style="display:none">&#160;<span class="cite-name-full">Ian</span><span class="cite-name-initials" title="Ian">I.</span></span>, <a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/rfc6455#section-5.2"><i>rfc6455</i></a>, datatracker.ietf.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=bookitem&amp;rft.aufirst=Ian&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=rfc6455&amp;rft.atitle=Base+Framing+Protocol&amp;rft.aulast=Fette&amp;rft_id=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Frfc6455%23section-5.2" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> <li id="cite_note-22"><span class="mw-cite-backlink"><a href="#cite_ref-22">↑</a></span> <span class="reference-text"><cite class="citation web"><span class="cite-name-before"><span class="cite-name-full">John A.</span><span class="cite-name-initials" title="John A." style="display:none">J.A.</span>&#160;</span><span class="cite-lastname">Tamplin</span><span class="cite-name-after" style="display:none">&#160;<span class="cite-name-full">John A.</span><span class="cite-name-initials" title="John A.">J.A.</span></span>, <a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/draft-ietf-hybi-websocket-multiplexing"><i>A Multiplexing Extension for WebSockets</i></a> [online], datatracker.ietf.org<span class="accessdate"> [dostęp 2021-07-28]</span><span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft.gengre=book&amp;rft.aufirst=John+A.&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.btitle=A+Multiplexing+Extension+for+WebSockets&amp;rft.aulast=Tamplin&amp;rft_id=https%3A%2F%2Fdatatracker.ietf.org%2Fdoc%2Fhtml%2Fdraft-ietf-hybi-websocket-multiplexing" style="display:none">&#160;</span> <span class="lang-list">(<abbr title="Treść w języku angielskim (English)">ang.</abbr>)</span>.</cite></span> </li> </ol></div></div></div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Źródło: „<a dir="ltr" href="https://pl.wikipedia.org/w/index.php?title=WebSocket&amp;oldid=69867076">https://pl.wikipedia.org/w/index.php?title=WebSocket&amp;oldid=69867076</a>”</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Specjalna:Kategorie" title="Specjalna:Kategorie">Kategoria</a>: <ul><li><a href="/wiki/Kategoria:Uniform_Resource_Identifier" title="Kategoria:Uniform Resource Identifier">Uniform Resource Identifier</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Ukryta kategoria: <ul><li><a href="/wiki/Kategoria:Uniwersalny_szablon_cytowania_%E2%80%93_brak_strony" title="Kategoria:Uniwersalny szablon cytowania – brak strony">Uniwersalny szablon cytowania – brak strony</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Tę stronę ostatnio edytowano 16 mar 2023, 00:38.</li> <li id="footer-info-copyright">Tekst udostępniany na licencji <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.pl">Creative Commons: uznanie autorstwa, na tych samych warunkach</a>, z możliwością obowiązywania dodatkowych ograniczeń. Zobacz szczegółowe informacje o <a class="external text" href="https://foundation.wikimedia.org/wiki/Policy:Terms_of_Use/pl">warunkach korzystania</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Polityka prywatności</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:O_Wikipedii">O Wikipedii</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Korzystasz_z_Wikipedii_tylko_na_w%C5%82asn%C4%85_odpowiedzialno%C5%9B%C4%87">Korzystasz z Wikipedii tylko na własną odpowiedzialność</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Powszechne Zasady Postępowania</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Dla deweloperów</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/pl.wikipedia.org">Statystyki</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Oświadczenie o ciasteczkach</a></li> <li id="footer-places-mobileview"><a href="//pl.m.wikipedia.org/w/index.php?title=WebSocket&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Wersja mobilna</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-6df7948d6c-7m2pl","wgBackendResponseTime":137,"wgPageParseReport":{"limitreport":{"cputime":"0.304","walltime":"0.471","ppvisitednodes":{"value":4439,"limit":1000000},"postexpandincludesize":{"value":40754,"limit":2097152},"templateargumentsize":{"value":4109,"limit":2097152},"expansiondepth":{"value":16,"limit":100},"expensivefunctioncount":{"value":4,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":29766,"limit":5000000},"entityaccesscount":{"value":1,"limit":400},"timingprofile":["100.00% 434.177 1 -total"," 43.55% 189.095 1 Szablon:Przypisy"," 32.21% 139.865 1 Szablon:Oprogramowanie_infobox"," 24.03% 104.321 19 Szablon:Cytuj"," 11.37% 49.368 1 Szablon:RFC"," 8.25% 35.835 1 Szablon:Infobox_tytuł"," 7.24% 31.428 4 Szablon:Pierwszy_niepusty"," 5.61% 24.359 2 Szablon:Infobox_grafika"," 4.69% 20.369 2 Szablon:Wersja_oprogramowania"," 3.98% 17.276 2 Szablon:Wersja_oprogramowania/format"]},"scribunto":{"limitreport-timeusage":{"value":"0.132","limit":"10.000"},"limitreport-memusage":{"value":5901802,"limit":52428800},"limitreport-logs":"\n== selectProperty ==\nrank = \"preferowana\"\nloader = table#1 {\n [\"get\"] = function#1,\n [\"group\"] = function#2,\n}\nfilters = table#1 {\n [\"P548\"] = table#2 {\n [\"Q2804309\"] = true,\n },\n}\nsnaktype = nil\nJednostka nie zawiera poszukiwanej właściwości 'P348'\n\n== selectProperty ==\nrank = \"preferowana lub zwykła\"\nloader = table#1 {\n [\"get\"] = function#1,\n [\"group\"] = function#2,\n}\nfilters = table#1 {\n [\"P548\"] = table#2 {\n [\"Q3295609\"] = true,\n },\n}\nsnaktype = nil\nJednostka nie zawiera poszukiwanej właściwości 'P348'\n\n== selectProperty ==\nrank = nil\nloader = table#1 {\n [\"get\"] = function#1,\n}\nfilters = table#1 {\n}\nsnaktype = nil\nJednostka nie zawiera poszukiwanej właściwości 'P910'\n\n== selectProperty ==\nrank = \"najlepsza\"\nloader = table#1 {\n [\"get\"] = function#1,\n}\nfilters = table#1 {\n [\"P582\"] = table#2 {\n [\"missing\"] = true,\n },\n}\nsnaktype = nil\n#prop A = 1\n#prop B = 1\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = false\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\next = false\next = false\next = nil\nrequired = table#1 {\n}\next = false\next = false\next = nil\nrequired = table#1 {\n}\next = nil\next = false\next = nil\nrequired = table#1 {\n}\n"},"cachereport":{"origin":"mw-web.eqiad.main-59856bd7d8-lvxrr","timestamp":"20241119191245","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"WebSocket","url":"https:\/\/pl.wikipedia.org\/wiki\/WebSocket","sameAs":"http:\/\/www.wikidata.org\/entity\/Q859938","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q859938","author":{"@type":"Organization","name":"Wsp\u00f3\u0142tw\u00f3rcy projekt\u00f3w Fundacji Wikimedia"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2011-01-29T10:33:46Z"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10