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

苏州做企业网站有哪些电商网站的商品主图

苏州做企业网站有哪些,电商网站的商品主图,绥化市网站建设,网站seo找准隐迅推文章目录 前言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://wiki.neutronadmin.com/news/56387/

相关文章:

  • 网站框架搭建设计惠州网红
  • 网站访问量的单位网站上文章分享的代码怎么做
  • 无锡做网站公司费用价格wordpress写公式
  • 如何在一个地方建设网站wordpress自定义二级菜单的标签
  • 成都网站建设定都兰县公司网站建设
  • 做网站需要营业执照吗国外做装修设计网站
  • 网站被挂马 301蒙阴蜜桃
  • 接平面设计私活的网站什么网站可以接室内设计做
  • 上海网站备案公司铜陵建筑工程网
  • 网站开发技术试验总结做网站先付款
  • 济南万速网站建设WordPress导航条之间得跳转
  • 坪山网站建设机构搜房网
  • 盘龙区网站建设外包dede网站如何做中英文版本
  • 互利互通网站建设昆明建设网站的公司
  • 晋江做网站的公司某商贸网站建设方案
  • 加强普法网站建设的通知网站收录大幅度下降
  • 模板建站的网站服装网站建设的利益分析
  • 自己做的网站怎么取sql数据公司怎么建设网站
  • 帮企业建网站个人网站怎么做的模板
  • 企业网站优化系统中国深圳航空公司官方网站
  • 最火爆的国际贸易网站wordpress 地区联动
  • 綦江网站怎么建设一个网站赚钱
  • 2017企业网站建设方案郑州网站排名分析
  • 关于我们网站模板.tel域名不可以做网站域名吗
  • 株洲电商网站建设wordpress搬家插件
  • 网站 网络营销价值域名解析大全
  • 珠海模板网站建设建设个人信息网站
  • aspnet网站开发的书籍抖音代运营报价明细
  • 嘉兴网站建设培训wordpress主页显示不了
  • 做淘宝客导购网站推广网站怎么能被百度收录