<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://130.wiki/index.php?action=history&amp;feed=atom&amp;title=WebSocket</id>
	<title>WebSocket - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://130.wiki/index.php?action=history&amp;feed=atom&amp;title=WebSocket"/>
	<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=WebSocket&amp;action=history"/>
	<updated>2026-10-30T14:49:37Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://130.wiki/index.php?title=WebSocket&amp;diff=6370&amp;oldid=prev</id>
		<title>IdleTap-bot：​由旧格式Infobox转换为新参数格式（label/data），修复空信息框（由IdleTap-bot执行）</title>
		<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=WebSocket&amp;diff=6370&amp;oldid=prev"/>
		<updated>2026-08-11T10:29:38Z</updated>

		<summary type="html">&lt;p&gt;由旧格式Infobox转换为新参数格式（label/data），修复空信息框（由IdleTap-bot执行）&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年8月11日 (二) 10:29的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key 130.wiki::diff:1.41:old-6369:rev-6370 --&gt;
&lt;/table&gt;</summary>
		<author><name>IdleTap-bot</name></author>
	</entry>
	<entry>
		<id>https://130.wiki/index.php?title=WebSocket&amp;diff=6369&amp;oldid=prev</id>
		<title>IdleTap-bot：​由旧格式Infobox转换为新参数格式（label/data），修复空信息框（由IdleTap-bot执行）</title>
		<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=WebSocket&amp;diff=6369&amp;oldid=prev"/>
		<updated>2026-08-11T10:28:12Z</updated>

		<summary type="html">&lt;p&gt;由旧格式Infobox转换为新参数格式（label/data），修复空信息框（由IdleTap-bot执行）&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年8月11日 (二) 10:28的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;zh&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;（没有差异）&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>IdleTap-bot</name></author>
	</entry>
	<entry>
		<id>https://130.wiki/index.php?title=WebSocket&amp;diff=6368&amp;oldid=prev</id>
		<title>IdleTap-bot：​由旧格式Infobox转换为新参数格式（label/data），修复空信息框（由IdleTap-bot执行）</title>
		<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=WebSocket&amp;diff=6368&amp;oldid=prev"/>
		<updated>2026-08-11T10:27:24Z</updated>

		<summary type="html">&lt;p&gt;由旧格式Infobox转换为新参数格式（label/data），修复空信息框（由IdleTap-bot执行）&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026年8月11日 (二) 10:27的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;第1行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第1行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  {{Infobox&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  {{Infobox&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;标题 &lt;/del&gt;= [[Web]]Socket&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;title &lt;/ins&gt;= [[Web]]Socket&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;内容 &lt;/del&gt;=  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}}-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;label1 &lt;/ins&gt;= 类型&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;类型&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| data1 = &lt;/ins&gt;网络通信协议&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}} &lt;/del&gt;网络通信协议&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}}-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| label2 = &lt;/ins&gt;标准&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;标准&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| data2 = &lt;/ins&gt;RFC 6455（IETF）&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}} &lt;/del&gt;RFC 6455（IETF）&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}}-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| label3 = &lt;/ins&gt;首次提出&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;首次提出&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| data3 = &lt;/ins&gt;2008年&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}} &lt;/del&gt;2008年&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}}-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| label4 = &lt;/ins&gt;标准化时间&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;标准化时间&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| data4 = &lt;/ins&gt;2011年12月&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}} &lt;/del&gt;2011年12月&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}}-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| label5 = &lt;/ins&gt;传输层&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;传输层&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| data5 = &lt;/ins&gt;[[TCP]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}} &lt;/del&gt;[[TCP]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}}-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| label6 = &lt;/ins&gt;设计目标&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;设计目标&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| data6 = &lt;/ins&gt;全双工、低延迟实时通信&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}} &lt;/del&gt;全双工、低延迟实时通信&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}}-&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| label7 = &lt;/ins&gt;相关标准&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;! &lt;/del&gt;相关标准&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;| data7 = &lt;/ins&gt;RFC 7692、RFC 8441、RFC 9220&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{!}} &lt;/del&gt;RFC 7692、RFC 8441、RFC 9220&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l37&quot;&gt;第37行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第36行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 握手与连接升级 ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 握手与连接升级 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WebSocket连接始于一个HTTP升级请求。客户端发送包含Upgrade: websocket及Connection: Upgrade头部的HTTP请求，服务器返回101 Switching Protocols状态码后，TCP连接即从HTTP协议切换至WebSocket协议。&amp;lt;ref name=&quot;:5&quot;&amp;gt;[https://www.cnblogs.com/imust2008/p/19561979 websocket协议和http协议有何依赖关系 - 博客园]&amp;lt;/ref&amp;gt; 握手过程中包含Sec-WebSocket-Key与Sec-WebSocket-Accept字段，用于防止跨协议攻击与缓存投毒。&amp;lt;ref name=&quot;:5&quot; /&amp;gt; 此设计使WebSocket能够复用80与443端口，兼容现有HTTP基础设施如防火墙、代理与负载均衡器。&amp;lt;ref name=&quot;:1&quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;WebSocket连接始于一个HTTP升级请求。客户端发送包含Upgrade: websocket及Connection: Upgrade头部的HTTP请求，服务器返回101 Switching Protocols状态码后，TCP连接即从HTTP协议切换至WebSocket协议。&amp;lt;ref name=&quot;:5&quot;&amp;gt;[https://www.cnblogs.com/imust2008/p/19561979 websocket协议和http协议有何依赖关系 - 博客园]&amp;lt;/ref&amp;gt; 握手过程中包含Sec-WebSocket-Key与Sec-WebSocket-Accept字段，用于防止跨协议攻击与&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;缓存&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/ins&gt;投毒。&amp;lt;ref name=&quot;:5&quot; /&amp;gt; 此设计使WebSocket能够复用80与443端口，兼容现有HTTP基础设施如防火墙、代理与负载均衡器。&amp;lt;ref name=&quot;:1&quot; /&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 数据帧与传输效率 ===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=== 数据帧与传输效率 ===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>IdleTap-bot</name></author>
	</entry>
	<entry>
		<id>https://130.wiki/index.php?title=WebSocket&amp;diff=1597&amp;oldid=prev</id>
		<title>云云：​创建页面，内容为“ {{Infobox | 标题 = WebSocket | 内容 =  {{!}}- ! 类型 {{!}} 网络通信协议 {{!}}- ! 标准 {{!}} RFC 6455（IETF） {{!}}- ! 首次提出 {{!}} 2008年 {{!}}- ! 标准化时间 {{!}} 2011年12月 {{!}}- ! 传输层 {{!}} TCP {{!}}- ! 设计目标 {{!}} 全双工、低延迟实时通信 {{!}}- ! 相关标准 {{!}} RFC 7692、RFC 8441、RFC 9220 }}  &#039;&#039;&#039;WebSocket&#039;&#039;&#039;是一种标准化的网络通信协议，由IETF于2011年12月以RFC 6455正式发布为…”</title>
		<link rel="alternate" type="text/html" href="https://130.wiki/index.php?title=WebSocket&amp;diff=1597&amp;oldid=prev"/>
		<updated>2026-07-22T03:54:30Z</updated>

		<summary type="html">&lt;p&gt;创建页面，内容为“ {{Infobox | 标题 = WebSocket | 内容 =  {{!}}- ! 类型 {{!}} 网络通信协议 {{!}}- ! 标准 {{!}} RFC 6455（IETF） {{!}}- ! 首次提出 {{!}} 2008年 {{!}}- ! 标准化时间 {{!}} 2011年12月 {{!}}- ! 传输层 {{!}} TCP {{!}}- ! 设计目标 {{!}} 全双工、低延迟实时通信 {{!}}- ! 相关标准 {{!}} RFC 7692、RFC 8441、RFC 9220 }}  &amp;#039;&amp;#039;&amp;#039;WebSocket&amp;#039;&amp;#039;&amp;#039;是一种标准化的网络通信协议，由IETF于2011年12月以RFC 6455正式发布为…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt; {{Infobox&lt;br /&gt;
| 标题 = [[Web]]Socket&lt;br /&gt;
| 内容 = &lt;br /&gt;
{{!}}-&lt;br /&gt;
! 类型&lt;br /&gt;
{{!}} 网络通信协议&lt;br /&gt;
{{!}}-&lt;br /&gt;
! 标准&lt;br /&gt;
{{!}} RFC 6455（IETF）&lt;br /&gt;
{{!}}-&lt;br /&gt;
! 首次提出&lt;br /&gt;
{{!}} 2008年&lt;br /&gt;
{{!}}-&lt;br /&gt;
! 标准化时间&lt;br /&gt;
{{!}} 2011年12月&lt;br /&gt;
{{!}}-&lt;br /&gt;
! 传输层&lt;br /&gt;
{{!}} [[TCP]]&lt;br /&gt;
{{!}}-&lt;br /&gt;
! 设计目标&lt;br /&gt;
{{!}} 全双工、低延迟实时通信&lt;br /&gt;
{{!}}-&lt;br /&gt;
! 相关标准&lt;br /&gt;
{{!}} RFC 7692、RFC 8441、RFC 9220&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;WebSocket&amp;#039;&amp;#039;&amp;#039;是一种标准化的网络通信协议，由IETF于2011年12月以RFC 6455正式发布为[[互联网]]标准（STD 34）。&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;[https://websocket.org/standards/ WebSocket Standards: RFC 6455, Extensions &amp;amp; Browser Support - WebSocket.org]&amp;lt;/ref&amp;gt; 该协议在单个TCP连接上提供全双工通信通道，允许客户端与[[服务器]]之间建立持久连接并进行双向、低延迟的[[数据]]交换。&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;[https://piehost.com/websocket/websocket-vs-http-polling WebSocket vs HTTP Polling - PieHost]&amp;lt;/ref&amp;gt; 与[[HTTP]]的请求-响应模型不同，WebSocket在初始握手完成后，连接保持打开状态，任何一方均可随时发送消息，无需重复建立连接。&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;[https://blog.postman.com/websockets-vs-http-key-differences-explained/ WebSockets vs HTTP: Key Differences Explained - Postman]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 历史 ==&lt;br /&gt;
&lt;br /&gt;
WebSocket的概念诞生于2008年，由Michael Carter牵头发起技术讨论，旨在解决当时[[浏览器]]端实时通信依赖Comet技术（轮询与长轮询）所带来的效率低下与实现复杂等问题。&amp;lt;ref name=&amp;quot;:3&amp;quot;&amp;gt;[https://yocharge.com/blog/websockets-real-time-nervous-system-connecting-ev-chargers-in-modern-charging-infrastructure/ WebSockets: Real-Time Nervous System - YoCharge]&amp;lt;/ref&amp;gt; 随后，Ian Hickson与Michael Carter合作确定了&amp;quot;WebSocket&amp;quot;这一名称，并将其纳入[[HTML]]5规范草案中。&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; 协议最初以&amp;quot;TCPConnection&amp;quot;为名，作为基于TCP的套接字API占位方案出现。&amp;lt;ref name=&amp;quot;:4&amp;quot;&amp;gt;[https://www.cnblogs.com/FreakEmbedded/p/19865128 你不知道的 WebSocket - CSDN]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2009年，[[Google]] [[Chrome]] 4成为首个完整支持WebSocket协议的浏览器。&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; 2010年，该协议获得主流浏览器的广泛采纳。2011年12月，IETF正式发布RFC 6455，将WebSocket协议标准化，定义了握手过程、数据帧格式、关闭握手及安全考量等内容。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; 此后，WebSocket扩展标准陆续出台：RFC 7692定义了基于deflate算法的逐消息压缩机制；RFC 8441增加了通过HTTP/2引导WebSocket的能力；RFC 9220进一步将其扩展至HTTP/3。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; WebSocket API现由WHATWG HTML Living Standard定义，[[全球]]主流浏览器支持率超过99%。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 技术特性 ==&lt;br /&gt;
&lt;br /&gt;
=== 握手与连接升级 ===&lt;br /&gt;
&lt;br /&gt;
WebSocket连接始于一个HTTP升级请求。客户端发送包含Upgrade: websocket及Connection: Upgrade头部的HTTP请求，服务器返回101 Switching Protocols状态码后，TCP连接即从HTTP协议切换至WebSocket协议。&amp;lt;ref name=&amp;quot;:5&amp;quot;&amp;gt;[https://www.cnblogs.com/imust2008/p/19561979 websocket协议和http协议有何依赖关系 - 博客园]&amp;lt;/ref&amp;gt; 握手过程中包含Sec-WebSocket-Key与Sec-WebSocket-Accept字段，用于防止跨协议攻击与缓存投毒。&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt; 此设计使WebSocket能够复用80与443端口，兼容现有HTTP基础设施如防火墙、代理与负载均衡器。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 数据帧与传输效率 ===&lt;br /&gt;
&lt;br /&gt;
握手完成后，通信转为轻量级的WebSocket帧格式，而非完整的HTTP消息。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; 帧头部开销极小，支持[[文本]]（UTF-8）与[[二进制]]数据载荷，并可通过分片机制处理大消息。&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; 控制帧用于ping、pong及连接关闭操作，使应用层可实现心跳检测与断连感知。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; 相比HTTP轮询每次请求均附带完整头部，WebSocket在持续通信场景下显著降低了带宽消耗与协议开销。&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 全双工与服务器推送 ===&lt;br /&gt;
&lt;br /&gt;
WebSocket的核心优势在于全双工通信能力。连接建立后，客户端与服务器均可独立发送消息，无需等待对方请求。&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; 服务器可在事件发生的瞬间主动向客户端推送数据，消除了轮询模式下的固有延迟。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; 这一特性使WebSocket成为实时应用的基础设施，涵盖即时通讯、在线协作、实时数据仪表盘及多人游戏等场景。&amp;lt;ref name=&amp;quot;:6&amp;quot;&amp;gt;[https://codelit.io/blog/websocket-vs-polling-vs-sse WebSocket vs Polling vs SSE — Choosing the Right Real-Time Strategy - Codelit]&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 与HTTP轮询的比较 ==&lt;br /&gt;
&lt;br /&gt;
在WebSocket出现之前，浏览器端实时通信主要依赖HTTP轮询（Polling）与长轮询（Long Polling）。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; 轮询模式下，客户端以固定间隔重复发送HTTP请求检查更新，即使无新数据也会产生大量冗余请求与带宽浪费。&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; 长轮询通过保持请求打开直至数据可用略有改善，但仍需反复建立连接，并受代理超时限制。&amp;lt;ref name=&amp;quot;:6&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
WebSocket通过持久化单一连接解决了上述问题：无需重复TCP握手与[[TLS]]协商，消息仅在数据实际产生时传输，服务器负载与实际使用量而非轮询频率成正比。&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; 在延迟方面，轮询的平均延迟约为轮询间隔的一半，而WebSocket可将延迟降至网络传播与处理时间决定的亚百毫秒级别。&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; 在扩展性方面，大规模轮询系统因空请求泛滥而难以承受高并发；WebSocket虽需维护长连接状态，但消息驱动的负载模式使其在同等[[用户]]规模下资源利用更为高效。&amp;lt;ref name=&amp;quot;:6&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 扩展标准 ==&lt;br /&gt;
&lt;br /&gt;
=== 压缩扩展 ===&lt;br /&gt;
&lt;br /&gt;
RFC 7692定义了WebSocket的per-message deflate扩展，允许对单个消息应用deflate压缩算法，减少文本类数据的传输体积。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; 该扩展在握手阶段通过Sec-WebSocket-Extensions头部协商启用。&lt;br /&gt;
&lt;br /&gt;
=== HTTP/2与HTTP/3引导 ===&lt;br /&gt;
&lt;br /&gt;
传统WebSocket通过HTTP/1.1升级握手建立。RFC 8441引入了通过HTTP/2流引导WebSocket连接的机制，使WebSocket可在HTTP/2多路复用环境中运行。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; RFC 9220进一步将该机制扩展至基于QUIC的HTTP/3，为WebSocket在现代化传输协议上的部署提供了标准化路径。&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 应用领域 ==&lt;br /&gt;
&lt;br /&gt;
WebSocket已成为实时Web应用的基础协议。在金融领域，它被用于股票行情推送与交易平台；在协作[[软件]]中，支持文档协同编辑与光标同步；在物联网与车联网场景中，为设备状态监控与充电基础设施提供低延迟通信通道。&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; 此外，在线游戏、社交媒体动态流、直播弹幕系统及客户服务聊天窗口等均广泛采用WebSocket实现即时交互。&amp;lt;ref name=&amp;quot;:6&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>云云</name></author>
	</entry>
</feed>