js实现webSocket客户端

1. websocket

由于http请求只能由客户端发起,所有当服务器资源有变化时,客户端只能通过轮询的方式。非常浪费资源。
websocket的特点:
  • 服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种
  • 建立在 TCP 协议之上,服务器端的实现比较容易
  • 可以发送文本,也可以发送二进制数据
  • 没有同源限制,客户端可以与任意服务器通信
  • 协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。如ws:localhost:8080/msg

2. 简单示例

var ws = new WebSocket("ws://localhost:8080/msg");

ws.onopen = function(evt) {
	console.log("Connection open ...");
	ws.send("Hello WebSockets!");
};

ws.onmessage = function(evt) {
	console.log("Received Message: " + evt.data);
	ws.close();
};

ws.onclose = function(evt) {
	console.log("Connection closed.");
};

3. api

1. websocket构造函数

用于创建一个webSocket实例,执行后,客户端就会与服务端连接
var ws = new WebSocket("ws://localhost:8080/msg");

2. webSocket.readyState

readyState属性返回实例对象的当前状态,共有四种。
  • CONNECTING:值为0,表示正在连接。
  • OPEN:值为1,表示连接成功,可以通信了。
  • CLOSING:值为2,表示连接正在关闭。
  • CLOSED:值为3,表示连接已经关闭,或者打开连接失败
例如:if(ws.readyState ==WebSocket.CONNECTING ){}

3. webSocket.onopen

用于指定连接成功后的回调函数
ws.onopen = function(evt) {
	console.log("Connection open ...");
	ws.send("Hello WebSockets!");
};
或者:
ws.addEventListener('open', function (event) {
  ws.send('Hello Server!');
});


4. webSocket.onclose

用于指定连接关闭后的回调函数。
ws.onclose = function(event) {
  var code = event.code;
  var reason = event.reason;
  var wasClean = event.wasClean;
};

ws.addEventListener("close", function(event) {
  var code = event.code;
  var reason = event.reason;
  var wasClean = event.wasClean;
});

5. webSocket.onmessage

用于指定收到服务器数据后的回调函数
ws.onmessage = function(event) {
  var data = event.data;
};

ws.addEventListener("message", function(event) {
  var data = event.data;
});

服务器数据有可能是文本,也有可能是二进制数据,需要判断
ws.onmessage = function(event){
  if(typeof event.data === String) {
    console.log("Received data string");
  }

  if(event.data instanceof ArrayBuffer){
    var buffer = event.data;
    console.log("Received arraybuffer");
  }
}
除了动态判断收到的数据类型,也可以使用binaryType属性,显式指定收到的二进制数据类型
// 收到的是 blob 数据
ws.binaryType = "blob";
ws.onmessage = function(e) {
  console.log(e.data.size);
};

// 收到的是 ArrayBuffer 数据
ws.binaryType = "arraybuffer";
ws.onmessage = function(e) {
  console.log(e.data.byteLength);
};

6. webSocket.send()

send方法用于向服务器发送数据
  • 发送文本
ws.send("Hello WebSockets!");
  • 发送Blob数据
var file = document
  .querySelector('input[type="file"]')
  .files[0];
ws.send(file);

  • 发送ArrayBuffer
var img = canvas_context.getImageData(0, 0, 400, 320);
var binary = new Uint8Array(img.data.length);
for (var i = 0; i < img.data.length; i++) {
  binary[i] = img.data[i];
}
ws.send(binary.buffer);

7. webSocket.bufferedAmount

bufferedAmount属性,表示还有多少字节的二进制数据没有发送出去。它可以用来判断发送是否结束
var data = new ArrayBuffer(10000000);
socket.send(data);

if (socket.bufferedAmount === 0) {
  // 发送完毕
} else {
  // 发送还没结束
}

8. webSocket.onerror

用于指定报错时的回调函数

ws.onerror = function(event) {
};

es.addEventListener("error", function(event) {
});




  • 19
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 要实现一个WebSocket客户demo下载,首先需要了解WebSocket是一种在单个TCP连接上进行全双工通信的协议。 1. 首先,你可以在网上搜索WebSocket客户的库或框架,比如Java中的Java-WebSocket、Python中的websocket-client等。选择一个合适的库。 2. 下载所选库的相关文件并解压。 3. 根据库的文档和示例进一步了解如何使用该库来实现WebSocket客户。 4. 阅读文档或示例,了解WebSocket客户的初始化和连接过程。 5. 根据文档或示例代码,编写一个简单的WebSocket客户demo,其中包括连接至WebSocket服务器、发送消息和接收消息的基本功能。注意在编写代码时要结合所选库的API进行调用。 6. 编译或运行该demo,确保功能正常。 7. 如果有其他需要,可以根据文档或示例进一步完善WebSocket客户的功能,比如处理WebSocket连接关闭、错误处理等。 8. 将最终的demo代码整理成一个可供下载的压缩文件。 总结:通过选择合适的WebSocket客户库,阅读文档示例,编写代码并进行调试,最终实现WebSocket客户demo并提供下载。同时可以根据需要进一步完善功能,比如处理连接关闭和错误。 ### 回答2: 要实现一个WebSocket客户demo,首先要确保你的开发环境中有相应的工具和库。 1. 安装Node.js:前往Node.js官网(https://nodejs.org/),下载适用于你操作系统的安装包,然后按照指导安装。 2. 创建项目文件夹:在你的电脑上选择一个合适的位置创建一个新的文件夹来存放项目文件。 3. 初始化项目:在命令行中进入到你创建的项目文件夹中,然后执行以下命令初始化一个新的Node.js项目: `npm init -y` 4. 安装WebSocket库:在命令行中执行以下命令安装WebSocket库: `npm install websocket` 5. 创建并编写客户代码:在项目文件夹中创建一个新的JavaScript文件,例如`client.js`,然后使用编辑器打开这个文件,并编写以下代码: ```javascript const WebSocket = require('websocket').client; const client = new WebSocket(); client.on('connectFailed', (error) => { console.log('连接失败:', error.toString()); }); client.on('connect', (connection) => { console.log('连接成功'); connection.on('error', (error) => { console.log('连接错误:', error.toString()); }); connection.on('close', () => { console.log('连接已关闭'); }); connection.on('message', (message) => { if (message.type === 'utf8') { console.log('收到消息:', message.utf8Data); } }); // 发送消息 connection.send('Hello, WebSocket Server!'); }); // 连接WebSocket服务器 client.connect('ws://localhost:8080/', 'echo-protocol'); ``` 6. 运行客户程序:在命令行中执行以下命令运行客户程序: `node client.js` 此时客户会尝试连接到指定的WebSocket服务器,并发送一条消息。 请注意,以上代码仅为一个简单的示例,你可能需要根据你的实际需求进行修改和扩展。同时,要确保WebSocket服务器已经正确地运行和配置,并监听在`ws://localhost:8080/`地址上。 ### 回答3: 在实现WebSocket客户Demo之前,我们需要首先了解WebSocket是一种基于TCP协议的全双工通信协议,能够在客户和服务器之间建立持久连接,实现实时通信。 要实现WebSocket客户Demo,可以按照以下步骤进行操作: 1. 下载WebSocket客户库:首先,我们需要下载适用于目标编程语言的WebSocket客户库。WebSocket客户库提供了许多用于创建和管理WebSocket连接的API。 2. 导入WebSocket客户库:将下载的WebSocket客户库导入到项目中,并确保可以正确引用和调用WebSocket相关的类或函数。 3. 创建WebSocket连接:使用WebSocket客户库的API,创建一个WebSocket连接对象。连接对象需要指定WebSocket服务器的URL,即服务器的WebSocket点。 4. 连接到服务器:使用连接对象的方法将WebSocket客户连接到服务器。这将触发WebSocket连接握手过程,如果成功,将建立一个持久的双向通信通道。 5. 处理WebSocket事件:一旦WebSocket连接建立成功,客户可以侦听WebSocket事件,例如消息接收、连接关闭等。根据业务需求,编写对应的事件处理逻辑,以处理从服务器发送的数据。 6. 发送数据到服务器:使用连接对象的方法,可以将数据发送到服务器。数据可以是文本字符串、二进制数据或其他形式的数据,具体取决于WebSocket客户库的API。 7. 关闭连接:在不再需要WebSocket连接时,可以使用连接对象的方法显式地关闭连接。这将从客户和服务器之间断开持久连接。 需要注意的是,具体实现WebSocket客户Demo的步骤可能会因所选编程语言和WebSocket客户库的不同而有所差异。在实际操作中,可能需要参考WebSocket客户库的文档和示例代码,以确保正确地使用API和处理事件。 一旦WebSocket客户Demo实现成功,客户将能够与WebSocket服务器建立双向通信,并实现实时数据传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值