4.2 创建TCP服务器使用Node.js创建TCP服务器,首先要使用require(‘net’)来加载net模块,之后使用net模块的createServer方法就可以创建一个TCP服务器.
- 使用net模块创建TCP服务器
- 使用telnet连接TCP服务器
- 使用net创建TCP客户端
//引入net模块var net=require('net');//创建TCP服务器var server=net.createServer(function(socket){console.log('someone connets');})server.listen(18001,function(){console.log('server is listening');});复制代码
当在浏览器中输入http://localhost:18001/,连接成功后就会打印出someone connets字样,表明createServer方法的回调函数已经执行,说明已经成功连接这个TCP服务器 。服务端:tcp.js:
const HOST = '127.0.0.1';//引入net模块var net=require('net');//创建TCP服务器var server=net.createServer(function(socket){console.log('someone connets');////获取地址信息var address=server.address();//获取地址端口console.log('the portis '+address.port);console.log('the addressis '+address.address);var message='client,the server address is'+JSON.stringify(address);//发送数据socket.write(message,function(){var writeSize=socket.bytesWritten;console.log(message+'has send');console.log('the size of message is'+writeSize);});//监听dada事件socket.on('data',function(data){//打印dataconsole.log(data.toString());socket.write('server write:test ')});}); //设置监听端口server.listen(18001,HOST,function(){console.log('server is listening');});复制代码
启动服务 node tcp.js客户端 cmd
1> 在cmd 控制台输入模拟客户端: telnet 127.0.0.1 18001
但是需要先通过控制面板把 telnet 勾选上,如下图所示:
文章插图
2> 或者通过网络调试助手模拟客户端和服务端 调试
文章插图
网络调试助手调试下载地址:
链接:https://pan.baidu.com/s/1bZQm1f9UtBKPSAIyqM4Nyw 提取码:d9ck复制代码
参考:www.onlinedown.net/soft/971066…客户端 tcpClient.js:
var net = require('net')const PORT = 18001;const HOST = '127.0.0.1';var tcpClient = net.Socket();tcpClient.connect(PORT, HOST, function(){console.log('客户端发送信息成功打印')tcpClient.write('客户端发送信息成功')});tcpClient.on('data',(data)=>{console.log( data.toString())})复制代码
五、websocket 常用框架- socket.io
- Ws
5.1.1 open:一旦服务端响应WebSocket连接请求,就会触发open事件 。响应的回调函数称为onopen 。
ws.onopen = function(e) {console.log("Connection open...");};复制代码
open事件触发的时候,意味着协议握手结束,WebSocket已经准备好收发数据 。如果你的应用收到open事件,就可以确定服务端已经处理了建立连接的请求,且同意和你的应用通信 。5.1.2 Message当消息被接受会触发消息事件,响应的回调函数叫做onmessage 。如下: // 接受文本消息的事件处理实例:
ws.onmessage = function(e) {if(typeof e.data =https://www.isolves.com/it/cxkf/bk/2020-10-14/== "string"){console.log("String message received", e, e.data);} else {console.log("Other message received", e, e.data);}};复制代码
除了文本消息,WebSocket消息机制还能处理二进制数据,有Blob和ArrayBuffer两种类型,在读取到数据之前需要决定好数据的类型 。// 设置二进制数据类型为blob(默认类型)ws.binaryType = "blob";// Event handler for receiving Blob messagesws.onmessage = function(e) {if(e.data instanceof Blob){console.log("Blob message received", e.data);var blob = new Blob(e.data);}};//ArrayBufferws.binaryType = "arraybuffer";ws.onmessage = function(e) {if(e.data instanceof ArrayBuffer){console.log("ArrayBuffer Message Received", + e.data);// e.data即ArrayBuffer类型var a = new Uint8Array(e.data);}};复制代码
5.1.3 Error如果发生意外的失败会触发error事件,相应的函数称为onerror,错误会导致连接关闭 。如果你收到一个错误事件,那么你很快会收到一个关闭事件,在关闭事件中也许会告诉你错误的原因 。而对错误事件的处理比较适合做重连的逻辑 。
推荐阅读
- WebSocket心跳检测和重连机制
- 如何用 OBS 和 WebSockets 播放视频流
- websocket连接太多导致服务器卡顿怎么办?一招轻松实现横向扩展
- WebSocket 协议初探
- 网页聊天客服是如何制作的?使用WebSocket技术!
- 如何在小程序中实现 WebSocket 通信
- PHP实时消息推送关于websocket技术
- WebSocket的基本使用
- 不懂风格、怎能会穿?8种“风格穿搭”解析,值得精读的穿衣干货
- WebSocket 通信过程与实现