JavaScript WebSocket 简明入门教程:API、属性与完整示例
作者:小括号时间:2026-10-28 09:18:30浏览:94
本文介绍如何使用 JavaScript 的 WebSocket API 实现浏览器与服务器之间的全双工通信。内容涵盖 WebSocket 对象的创建、核心属性(如 readyState)、事件处理(open、message、close)及常用方法,并提供了一个完整的 HTML 示例代码,展示如何检测浏览器支持、建立连接、发送消息及处理响应。
WebSocket 连接与通信基础
在理解网络套接字与 Web 服务器的连接机制后,即可实现从浏览器向服务器发送数据,并接收服务器返回的响应。
WebSocket API 与对象创建
以下是创建 WebSocket 对象的 API 说明:
var Socket = new WebSocket(url, [protocal] );上述代码中,第一个参数指定要连接的 URL 地址;第二个参数为可选参数,用于指定服务器支持的子协议。
WebSocket 属性、事件与方法详解
WebSocket 对象包含以下属性:
| 属性 | 说明 |
|---|---|
| Socket.readyState | readyState的代表的ReadOnly属性的连接状态。它可以有以下值:
|
| Socket.bufferedAmount | 读属性的bufferedAmount代表文本的字节数,utf - 8的排队使用send()方法。 |
WebSocket 对象触发以下事件:
| 事件 | 处理程序 | 说明 |
|---|---|---|
| open | Socket.onopen | 此事件发生在套接字建立连接。 |
| message | Socket.onmessage | 此事件发生时,客户端收到来自服务器的数据。 |
| error | Socket.onerror | 此事件发生时有任何通信错误。 |
| close | Socket.onclose | 此事件发生在连接关闭。 |
WebSocket 对象提供以下方法:
| 方法 | 说明 |
|---|---|
| Socket.send() | send(data)方法用来连接传输数据。 |
| Socket.close() | close()方法将被用于终止任何现有的连接。 |
WebSocket 完整使用示例
以下是一个 WebSocket 的完整使用示例:
示例代码如下:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function WebSocketTest()
{
if ("WebSocket" in window)
{
alert("WebSocket is supported by your Browser!");
// Let us open a web socket
var ws = new WebSocket("ws://localhost:9998/echo");
ws.onopen = function()
{
// Web Socket is connected, send data using send()
ws.send("Message to send");
alert("Message is sent...");
};
ws.onmessage = function (evt)
{
var received_msg = evt.data;
alert("Message is received...");
};
ws.onclose = function()
{
// websocket is closed.
alert("Connection is closed...");
};
}
else
{
// The browser doesn't support WebSocket
alert("WebSocket NOT supported by your Browser!");
}
}
</script>
</head>
<body>
<div id="sse">
<a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>作者最新文章
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
