Websockify。
websockif的Python项目详细描述
websockify:websockets支持任何应用程序/服务器
websockify的前身是wsproxy,是 novnc项目。
在最基本的层面上,websockify只是翻译websockets流量 正常的套接字通信。websockify接受websockets握手, 解析它,然后开始在客户端和 两个方向的目标。
新闻/帮助/联系
显著的承诺、公告和新闻发布到 @novnc
如果您是WebSockify开发人员/集成人员/用户(或希望) 请加入novnc/websockify 讨论组
bug和功能请求可以通过github提交 问题
如果你想对WebSockify表示感谢,你可以向 非营利组织,如:同情 国际,sil, 人类栖息地,电子前沿 基金会< /A>,< HeRF= ="HTTP://www-Afth.MalARA.COM/"Re="nfoLoLo>"抗疟疾 基金会< /a>,< HeRF= ="HTTP://www. NOthuthButn.NET/Re="NoFoLoL> > 网络等。如果需要,请发tweet@novnc。
WebSockets二进制数据
从websockif0.5.0开始,只有hybi/ietf 支持6455 WebSocket协议。对老年人没有支持 base64编码数据格式。
加密的WebSocket连接(wss://)
要使用websocket'wss://'uri方案加密通信,您需要
生成要加载WebSockify的证书和密钥。默认情况下,WebSockify
加载证书文件名self.pem
,但--cert=cert
和--key=key
选项可以覆盖文件名。您可以生成自签名证书
使用openssl。当需要公共名称时,请使用服务器的主机名
代理的运行位置:
openssl req -new -x509 -days 365 -nodes -out self.pem -keyout self.pem
要使自签名证书生效,您需要使您的客户端/浏览器 理解它。您可以将其安装为接受的证书,或者 对首先导航到的https连接使用相同的证书 批准。浏览器通常不会给你"信任证书"?促使 通过使用无效证书打开wss套接字,因此需要 通过这两种方法之一接受它。
如果您有带有一个或多个中间层的商业/有效SSL证书
证书,将它们集中到一个文件中,首先是服务器证书,然后是
来自CA等的中间文件。使用--cert
选项指向此文件
然后用--key
键。最后,根据需要使用--ssl
。
其他WebSockify功能
基本操作不需要这些功能。
守护:当指定了
-d
选项时,WebSockify将运行 作为后台进程。ssl(wss://websockets-uri):这是由 通过嗅探从客户端发送的第一个字节,然后 如果数据以"\x16"或"\x80"开头,则包装套接字 (表示SSL)。
会话记录:此功能允许记录通信量 使用
--记录从客户端发送和接收到文件 选项. < /P>
mini-webserver:websockify可以检测和响应普通的web 与WebSockets代理在同一端口上的请求。这个功能 使用
--web dir
选项激活,其中dir是 网络目录o服务。< /P>包装程序:请参阅下面的"包装程序"部分。
日志文件:WebSockify可以将所有日志信息保存在一个文件中。 此功能通过
--日志文件
选项激活 其中file是保存日志的文件。身份验证插件:WebSockify可以要求身份验证 websocket连接,如果您使用
--web auth
,也可以用于普通 Web请求。此功能通过--auth plugin class
和--auth source arg
选项,其中class是 通常auth_plugin s.py和arg中的一个是插件的配置。令牌插件:WebSockify的一个实例可以将客户端连接到 根据发送的令牌,有多个不同的预配置目标 由客户端使用
标记
url参数,或使用 如果您使用--host token
,请访问WebSockify。此功能是 使用--token plugin class
和--token source arg
激活 选项,其中类通常是token_plugins.py中的一个,arg是 插件的配置。
WebSockify的其他实现
websockify的主要实现是在python中。有 中提供了其他语言的几种替代实现 我们的姊妹存储库websockify js (javascript/node.js)和websockify-other (C、克洛朱尔、鲁比)。
此外,还有其他几个外部项目 WebSockify"协议"。请参阅替代实现功能 矩阵用于 更多信息。
包装程序
除了从源地址代理到目标地址之外 (可能在不同的系统上),WebSockify有能力 在本地系统和代理WebSockets通信上启动程序 程序拥有/绑定的普通TCP端口。
使用一个小的ld_预加载库(rebind.so
)完成。
它拦截程序的bind()系统调用。指定的
端口移动到新的本地主机/环回可用高端口。网络化
然后将指向原始端口的WebSocket流量代理到
程序的新(移动)端口。
通过将目标替换为--
然后是要换行的程序命令行。
`./run 2023 -- PROGRAM ARGS`
--wrap mode
选项可用于指示要采取的操作
当包装的程序退出或守护时。
下面是一个使用websockify包装vncserver命令的示例 (哪种背景本身)用于 novnc:
`./run 5901 --wrap-mode=ignore -- vncserver -geometry 1024x768 :1`
下面是包装telnetd(来自krb5 telnetd)的示例。守护进程 在连接关闭后退出,因此包装模式设置为重新生成 命令:
`sudo ./run 2023 --wrap-mode=respawn -- telnetd -debug 2023`
websockify js中的wstelnet.html
页面
项目演示了一个简单的基于websockets的telnet客户端(使用
主机和端口分别为"localhost"和"2023"。
安装WebSockify
下载其中一个版本或最新的开发版本
它并以根用户身份运行python setup.py install
提取了文件。通常,这也会安装numpy
性能,如果您还没有安装它。不过,努比是
可选的。如果你不想安装numpy或者你不能编译它,
您可以编辑setup.py并删除 之后,WebSockify应该可以在您的路径中使用。跑
install_requires=['numpy'],
行
在运行python setup.py install之前
WebSockify--帮助
确认安装正确。更改
0.9.0
0.8.0
0.7.0
0.6.1 - 2015年5月11日
0.6.0-2014年2月18日
logging
module0.5.1-2013年6月27日
0.4.1-2013年3月12日
0.4.0-2013年3月12日
0.3.0-2013年1月15日
0.2.1-2012年10月15日
0.2.0-2012年9月17日
0.1.0-2012年5月11日
推荐PyPI第三方库