当前位置: 首页 > news >正文

山西做网站怎么样海外人才招聘网站

山西做网站怎么样,海外人才招聘网站,电商网站规划与建设方案,中航华福工程建设有限公司网站文章目录 前言websockifywebsockify 介绍websockify 使用 探索的过程提供基础TCP服务测试可用 实现Websocket客户端开始测试websockify功能再次启动websockify单独实现一个js版本websocket客户端 什么是VNC总结 前言 目前遇到一个问题#xff0c;原本的服务都是利用tcp通信的… 文章目录 前言websockifywebsockify 介绍websockify 使用 探索的过程提供基础TCP服务测试可用 实现Websocket客户端开始测试websockify功能再次启动websockify单独实现一个js版本websocket客户端 什么是VNC总结 前言 目前遇到一个问题原本的服务都是利用tcp通信的但是某些平台只支持websocket是不是要从头实现一套websocket网络收发逻辑呢短时间内有没有替代方案呢在经过一番寻找之后发现了websockify这个神器可以将websocket协议转换成tcp协议从而实现不修改应用服务就支持tcp协议的目的接下来就说说它怎么用以及探索的过程。 websockify websockify 介绍 websockify 是一个用于将 WebSocket 流量转发到其他协议的工具它的主要用途之一是将 WebSockets 转发到基于 TCP 的协议例如 VNCVirtual Network Computing以下是它的一些关键特点和用途 WebSocket 转发 websockify 允许你将 WebSocket 流量转发到其他类型的网络服务使得你可以通过 WebSocket 连接访问这些服务。 VNC 转发 websockify 最常用于将 WebSocket 转发到 VNC 服务器。这使得你可以通过 Web 浏览器访问运行 VNC 服务的远程计算机的桌面。 安全性 websockify 支持加密通信因此可以在安全连接上运行提供更好的数据保护。 协议适配 websockify 提供了一个通用的桥接机制允许你将 WebSocket 连接转发到支持其他协议的服务而不仅仅是 VNC。 JavaScript 客户端 websockify 还包括一个 JavaScript 客户端库可以直接在浏览器中使用无需额外的插件。 使用 websockify 的典型场景包括在 Web 浏览器中访问远程计算机的桌面或者通过 WebSocket 连接到其他需要 TCP 连接的服务在实际应用中你可以通过命令行使用 websockify也可以将其嵌入到其他应用程序中。 websockify 使用 在Ubuntu系统下可以直接使用以下安装 $ sudo apt install websockify下面是一个使用示例作用是将原本连接到8765的websocket请求转换成tcp请求TCP端口4321 $ websockify 8765 127.0.0.1:12346启动后原本仅支持TCP协议的服务就可以通过websockify实现对websocket的支持了 探索的过程 虽然是短短的一条 websockify 8765 127.0.0.1:12346 命令就可以实现从websocket到tcp的转换但是探索的过程却不顺利在发现websockify这个神器之后首先是测试它是否能满足我们的需求是否好用但是直接在原有的服务上测试太费时间所以尝试写了几个模拟的脚本。 提供基础TCP服务 最基本的我们需要一个很能提供TCP服务的程序这里我使用python写了一个回显的服务器 echoserver.py绑定本地的12346端口 import socketdef main():# 创建一个TCP套接字server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定IP地址和端口server_socket.bind((127.0.0.1, 12346))# 监听连接server_socket.listen(5)print(服务器已启动等待客户端连接...)while True:# 接受客户端连接client_socket, client_address server_socket.accept()print(f客户端{client_address}已连接)# 接收客户端发送的数据data client_socket.recv(1024)print(f收到来自{client_address}的数据 {data.decode(utf-8)})# 将接收到的数据发送回客户端client_socket.send(data)print(f已将数据发送回{client_address})# 关闭客户端套接字client_socket.close()print(f客户端{client_address}已断开连接)if __name__ __main__:main()测试可用 启动服务 $ python3 echoserver.py 服务器已启动等待客户端连接...用nc命令发送tcp数据 $ echo Hello server | nc 127.0.0.1 12346 Hello serverTCP服务器看到的内容 服务器已启动等待客户端连接... 客户端(127.0.0.1, 59214)已连接 收到来自(127.0.0.1, 59214)的数据 Hello server已将数据发送回(127.0.0.1, 59214) 客户端(127.0.0.1, 59214)已断开连接TCP服务一切正常 实现Websocket客户端 因为python的运行环境是现成的所以我又用它写了一个websocket客户端 wsclient.py 来发送数据想运行的话得安装几个包 python3 -m pip install websocket python3 -m pip install websocket-client真实的情况下我是用websocket客户端连接nginx然后将nginx转发到websockify监听端口然后websockify将数据转成tcp连接应用服务但是这个过程太复杂了不利于说明问题所以后面的内容我省掉nginx假装它不存在直接用websocket客户端连接websockify监听端口 # -*- coding: utf-8 -*- # 运行websocket服务器import websocketdef on_message(ws, message):print(fReceived message: {message})def on_error(ws, error):print(fError: {error})def on_close(ws, close_status_code, close_msg):print(fConnection closed with status code {close_status_code})def on_open(ws):print(Connection opened)# 在连接建立后发送一条消息ws.send(abcd)if __name__ __main__:# WebSocket 服务器地址ws_url ws://10.10.49.172:8765# 创建 WebSocket 连接ws websocket.WebSocketApp(ws_url,on_messageon_message,on_erroron_error,on_closeon_close)# 设置连接建立时的回调函数ws.on_open on_open# 启动 WebSocket 连接ws.run_forever()为了websocket客户端的测试我写了一个websocket服务器 wsserver.py 来接收数据不过这不是一开始就测试了而是在后面发现转换TCP失败查找原因按流程分段测试时补充的脚本内容 import asyncio import websocketsasync def echo(websocket, path):try:async for message in websocket:print(fReceived message: {message})await websocket.send(message)except websockets.exceptions.ConnectionClosed:print(WebSocket connection closed)async def main():server await websockets.serve(echo, 0.0.0.0, 12346)print(WebSocket server is running...)await server.wait_closed()if __name__ __main__:asyncio.run(main())测试结果websocket客户端发送的数据websocket服务器可以正常收到。 开始测试websockify功能 启动tcp服务echoserver监听12346端口 $ python3 echoserver.py 服务器已启动等待客户端连接...启动tcp服务websockify监听8765端口转换到12346端口 $ websockify 8765 127.0.0.1:12346 WebSocket server settings:- Listen on :8765- No SSL/TLS support (no cert file)- proxying from :8765 to 127.0.0.1:12346运行websocket客户端发送的数据 $ python3 ./wsclient.py Connection opened Connection closed with status code 1003报错了 再看echoserver输出虽然连接成功但是收到的数据为空 客户端(‘127.0.0.1’, 55032)已连接 收到来自(‘127.0.0.1’, 55032)的数据 已将数据发送回(‘127.0.0.1’, 55032) 客户端(‘127.0.0.1’, 55032)已断开连接 然后看下websockify输出显示转发连接12346端口成功了但是没有后续输出 $ websockify 8765 127.0.0.1:12346 WebSocket server settings: Listen on :8765No SSL/TLS support (no cert file)proxying from :8765 to 127.0.0.1:12346 10.2.48.36 - - [13/Dec/2023 20:03:11] 10.2.48.36: Plain non-SSL (ws://) WebSocket connection 10.2.48.36 - - [13/Dec/2023 20:03:11] connecting to: 127.0.0.1:12346 定位问题吧期间不断调整nginx配置查看nginx和websockify日志调整wsclient写法调整echoserver写法分步测试wsclient和echoserver功能都没发现问题具体测试细节暂且不表后来我发现可以修改websockify启动参数输出更详细的日志测试过程如下 再次启动websockify 启动websockify再次使用wsclient测试输出了额外的信息 $ websockify 8765 127.0.0.1:12346 --log-file /tmp/ws.log -v --traffic WebSocket server settings:- Listen on :8765- No SSL/TLS support (no cert file)- proxying from :8765 to 127.0.0.1:12346 10.2.48.36: new handler Process 10.2.48.36 - - [13/Dec/2023 20:13:42] GET / HTTP/1.1 101 - 10.2.48.36 - - [13/Dec/2023 20:13:42] 10.2.48.36: Plain non-SSL (ws://) WebSocket connection 10.2.48.36 - - [13/Dec/2023 20:13:42] connecting to: 127.0.0.1:12346Traffic Legend:} - Client receive}. - Client receive partial{ - Target receive - Target send. - Target send partial - Client send. - Client send partial }.10.2.48.36 - - [13/Dec/2023 20:13:42] 127.0.0.1:12346: Client closed connection 10.2.48.36 - - [13/Dec/2023 20:13:42] 127.0.0.1:12346: Closed target顺着结尾的两条日志 Client closed connection我找到了这一篇问题 websockify - Client disconnects immediately after connection #365 结论说是websockify不支持发送文本了 Hmm… Are you trying to send text over that socket? We dropped support for text frames in the big cleanup. Could you print the code and reason from the close in your close handler? 我一看我的wsclient.py可不就是发送的文本嘛看来有救了赶紧改成了发送bytes ws.send(b\x01\x02\x03\x04)但错误依旧尝试各种发送函数无果我严重怀疑我的换个python的websockets包有问题所以我用html写了一个wsclient.html !DOCTYPE html html langen headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleWebSocket Binary Data Example/title /head bodyscript// 替换为你的 WebSocket 服务器地址const socket new WebSocket(ws://10.10.49.172:8765);// 监听连接打开事件socket.addEventListener(open, (event) {console.log(WebSocket connection opened.);// 构造二进制数据这里使用一个简单的示例const binaryData new Uint8Array([49, 50, 51, 52]);// 发送二进制数据socket.send(binaryData);console.log(Binary data sent successfully.);});// 监听接收消息事件socket.addEventListener(message, (event) {console.log(Received message:, event.data);});// 监听连接关闭事件socket.addEventListener(close, (event) {console.log(WebSocket connection closed.);});// 监听错误事件socket.addEventListener(error, (event) {console.error(WebSocket error:, event);});/script /body /html这次终于正常了websockify输出变成了由应用服务主动断开 $ websockify 8765 127.0.0.1:12346 --log-file /tmp/ws.log -v --traffic WebSocket server settings:- Listen on :8765- No SSL/TLS support (no cert file)- proxying from :8765 to 127.0.0.1:12346 10.2.48.36: new handler Process 10.2.48.36 - - [13/Dec/2023 20:24:29] GET / HTTP/1.1 101 - 10.2.48.36 - - [13/Dec/2023 20:24:29] 10.2.48.36: Plain non-SSL (ws://) WebSocket connection 10.2.48.36 - - [13/Dec/2023 20:24:29] connecting to: 127.0.0.1:12346Traffic Legend:} - Client receive}. - Client receive partial{ - Target receive - Target send. - Target send partial - Client send. - Client send partial }{10.2.48.36 - - [13/Dec/2023 20:24:29] 127.0.0.1:12346: Target closed connection 10.2.48.36 - - [13/Dec/2023 20:24:29] 127.0.0.1:12346: Closed targetechoserver也看到了发送的内容【1234】 $ python3 echoserver.py 服务器已启动等待客户端连接... 客户端(127.0.0.1, 37438)已连接 收到来自(127.0.0.1, 37438)的数据 1234 已将数据发送回(127.0.0.1, 37438) 客户端(127.0.0.1, 37438)已断开连接单独实现一个js版本websocket客户端 刚刚用html里的js发送了websocket数据需要浏览器的帮助如果是在服务器上局限性很大所以我调整了一下改成了js版本websocket客户端用node.js运行wsclient.js内容如下 const WebSocket require(ws);// 替换为你的 WebSocket 服务器地址 const socket new WebSocket(ws://10.10.49.172:8765);// 监听连接打开事件 socket.addEventListener(open, (event) {console.log(WebSocket connection opened.);// 构造二进制数据这里使用一个简单的示例const binaryData new Uint8Array([49, 50, 51, 52]);// 发送二进制数据socket.send(binaryData);console.log(Binary data sent successfully.); });// 监听接收消息事件 socket.addEventListener(message, (event) {console.log(Received message:, event.data); });// 监听连接关闭事件 socket.addEventListener(close, (event) {console.log(WebSocket connection closed.); });// 监听错误事件 socket.addEventListener(error, (event) {console.error(WebSocket error:, event); });运行结果如下 $ node wsclient.js WebSocket connection opened. Binary data sent successfully. Received message: Buffer 31 32 33 34 WebSocket connection closed.至此websockify的测试就结束了它可以满足我们的需求将websocket请求转换成tcp请求 什么是VNC 前面在介绍websockify多次提到VNC其实VNC (Virtual Network Computing) 是一种远程桌面协议允许用户在一个计算机上通过网络远程控制另一个计算机的桌面。VNC 提供了一种在远程计算机上查看和操作桌面的方式就像你坐在那台计算机前一样以下是关于 VNC 的一些关键概念 Server在 VNC 中远程计算机上运行的应用程序称为 VNC 服务器。该服务器负责监听连接请求并将计算机的桌面图像发送给连接的客户端。 Viewer连接到 VNC 服务器的应用程序称为 VNC 查看器。这是用户使用的远程桌面客户端允许他们查看和操作远程计算机的桌面。 PortVNC 服务器通过一个特定的网络端口监听连接请求。通常VNC 默认使用 5900 端口。如果有多个 VNC 服务器在同一台计算机上运行它们可能使用不同的端口5901、5902 等。 SecurityVNC 提供了一些安全性选项如密码保护和加密。这有助于确保在远程访问时保护计算机的安全。 AuthenticationVNC 服务器和查看器之间的连接通常需要身份验证。这可以是使用密码进行简单的身份验证也可以是更复杂的加密和密钥交换过程。 websockify对于一些场景特别是在 Web 浏览器中访问 VNC你可能会使用工具如 websockify 将 VNC 的协议转换为 WebSocket 协议以便在浏览器中实现 VNC 远程桌面访问。 总结 websockify可以轻松实现从websocket请求向tcp请求的转换使用很方便转换路径 wsclient --ws-- websockify --tcp-- tcp application --tcp-- websockify --ws-- wsclientwss对应的是ws的加密版本他们的关系是wsswsSSL/TSL类似的httpshttpSSL/TSL无论是nginx还是websockify都可以配置服务器证书将应用服务器从SSL/TSL中解脱出来VNC是一种远程桌面协议允许用户在一个计算机上通过网络远程控制另一个计算机的桌面 反爬链接请勿点击原地爆炸概不负责 迈出这一步确实不太容易一旦行动了就会发现没有想象中的那么难我们都没有预知未来的能力无法判定目前的选择是对还是错既然选择了就要努力走下去
http://www.hkea.cn/news/14397176/

相关文章:

  • 建站行业已死天津北京网站建设公司哪家好
  • 北京建设企业协会网站首页搜索引擎网络推广公司上海
  • 中国万网icp网站备案专题哈尔滨自助建站系统
  • php是做网站美工的吗网站运营成本预算
  • 制作网站素材哪里可以免费推广广告
  • dw做网站背景图片设置铺平检察门户网站建设情况
  • iis添加网站建设中西安百度搜索排名
  • 设计网站大全湖南岚鸿网站大全网站开发的论文题目
  • 做网站十大公司哪家好网络运营招聘信息
  • 极客 pthyon 做网站网站建设文案
  • 手机 网站开发aspx手机企业网站
  • 外贸自建站源码女装网站建设
  • 广州网页设计制作产品介绍网站如何做seo
  • 网站缩放代码wordpress文件插件
  • 呼伦贝尔旅游网站建设营销型网站的建设重点是什么
  • 个人建什么网站比较好开发软件需要什么软件
  • 济南冰河世纪网站建设四川华泰建设集团网站
  • 大学生兼职网站建设策划书python基础教程第3版
  • 自建门户网站网站建设vs网络推广
  • 做新网站的swot分析wordpress404无法加载
  • 建设银行信用卡被钓鱼网站骗了15000wordpress主题 电影
  • pc网站转wap网站新乡专业做网站公司
  • wordpress主题的网站wordpress 免费注册
  • 陕西做网站的企业培训考试app
  • 自己电脑做主机怎么做网站知名营销网站
  • 烟台建设科技网站网站优化设计方案怎么做
  • 太原本地网站搭建公司现代风格装修效果图
  • 济南建站公司模板如何制作自己的官网
  • 惠民网站建设网页界面设计的构成要素
  • 部门网站建设整改做模具的网站