如何在windows系统中安装websocket模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在windows系统中安装websocket模块相关的知识,希望对你有一定的参考价值。

参考技术A WebSocket协议本质上是一个基于TCP的协议。为了建立一个WebSocket连接,客户端浏览器首先要向服务器发起一个HTTP请求,这个请求和通常的HTTP请求不同,包含了一些附加头信息,其中附加头信息”Upgrade:WebSocket”表明这是一个申请协议升级的HTTP请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的WebSocket连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。下面我们来详细介绍一下WebSocket协议,由于这个协议目前还是处于草案阶段,版本的变化比较快,我们选择目前最新的draft-ietf-hybi-thewebsocketprotocol-17版本来描述WebSocket协议。因为这个版本目前在一些主流的浏览器上比如Chrome,、FireFox、Opera上都得到比较好的支持。通过描述可以看到握手协议客户端发到服务器的内容:  代码如下复制代码GET/chatHTTP/1.1Host:server.example.comUpgrade:websocketConnection:UpgradeSec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==Origin:Sec-WebSocket-Protocol:chat,superchatSec-WebSocket-Version:13从服务器到客户端的内容:  代码如下复制代码HTTP/1.1101SwitchingProtocolsUpgrade:websocketConnection:UpgradeSec-WebSocket-Accept:s3pPLMBiTxaQ9kYGzzhZRbK+xOo=Sec-WebSocket-Protocol:chat这些请求和通常的HTTP请求很相似,但是其中有些内容是和WebSocket协议密切相关的。我们需要简单介绍一下这些请求和应答信息,”Upgrade:WebSocket”表示这是一个特殊的HTTP请求,请求的目的就是要将客户端和服务器端的通讯协议从HTTP协议升级到WebSocket协议。其中客户端的Sec-WebSocket-Key和服务器端的Sec-WebSocket-Accept就是重要的握手认证信息了,这些内容将在服务器端实现的博文中讲解。相信通过上文的讲解你应该对WebSocket有了个初步认识了,如果有任何疑问欢迎交流。客户端如概念篇中介绍的握手协议,客户端是由浏览器提供了API,所以只要使用javascript来简单调用即可,而服务器端是要自己实现的,服务器端将在下个博文来讲。  代码如下复制代码  WebSocketJavaScript接口定义:[Constructor(inDOMStringurl,optionalinDOMStringprotocol)]interfaceWebSocketreadonlyattributeDOMStringURL;//readystateconstunsignedshortCONNECTING=0;constunsignedshortOPEN=1;constunsignedshortCLOSED=2;readonlyattributeunsignedshortreadyState;readonlyattributeunsignedlongbufferedAmount;//networkingattributeFunctiononopen;attributeFunctiononmessage;attributeFunctiononclose;booleansend(inDOMStringdata);voidclose();;WebSocketimplementsEventTarget;简单了解下接口方法和属性:readyState表示连接有四种状态:CONNECTING(0):表示还没建立连接;OPEN(1):已经建立连接,可以进行通讯;CLOSING(2):通过关闭握手,正在关闭连接;CLOSED(3):连接已经关闭或无法打开;url是代表WebSocket服务器的网络地址,协议通常是”ws”或“wss(加密通信)”,send方法就是发送数据到服务器端;close方法就是关闭连接;onopen连接建立,即握手成功触发的事件;onmessage收到服务器消息时触发的事件;onerror异常触发的事件;onclose关闭连接触发的事件;JavaScript调用浏览器接口实例如下:  代码如下复制代码varwsServer='ws://localhost:8888/Demo';//服务器地址varwebsocket=newWebSocket(wsServer);//创建WebSocket对象websocket.send("hello");//向服务器发送消息alert(websocket.readyState);//查看websocket当前状态websocket.onopen=function(evt)//已经建立连接;websocket.onclose=function(evt)//已经关闭连接;websocket.onmessage=function(evt)//收到服务器消息,使用evt.data提取;websocket.onerror=function(evt)//产生异常;

如何在Windows中安装PCNTL扩展?

我在Windows中运行PHPUnit并尝试通过composer.json安装PHPUnit:

"phpunit/php-invoker": "*"

...有这种依赖,但我得到这个错误:

phpunit / php-invoker 1.1.3需要ext-pcntl * - >系统中缺少所请求的PHP扩展pcntl。

我该如何安装此扩展程序?

答案

您无法在Windows上安装ext-pcntl扩展。根据PHP文档:

目前,该模块不能在非Unix平台(Windows)上运行。

如果你想安装PHPUnit,你只需要PHPUnit库:

composer require phpunit/phpunit 4.*

你不需要php-invoker来安装PUPUnit。但如果你还需要php-invoker库,那你就不走运了。尝试使用Vagrant或普通虚拟机与Linux发行版,如Ubuntu,Debian或Mint。

另一答案

如果你在没有家园的Windows 10上运行,你可以启用linux子系统并运行你的代码。

https://www.windowscentral.com/how-install-bash-shell-command-line-windows-10

然后安装要求

sudo apt安装php7.2-fpm php7.2-mbstring php7.2-xmlrpc php7.2-soap php7.2-gd php7.2-xml php7.2-cli php7.2-zip php7.2-mysql

这也可以运行laravel特使和地平线,它不适用于Windows。

这是一个很好的轻量级解决方案

以上是关于如何在windows系统中安装websocket模块的主要内容,如果未能解决你的问题,请参考以下文章

安装完所有东西后如何在Windows 10操作系统中安装tensorflow仍然出现错误

如何在Parallels Desktop中安装Windows 10虚拟机

如何在Windows系统中安装Python

如何在windows 7系统中安装ie 11浏览器

如何在Qemu虚拟机中安装Windows XP系统

如何在windows 11中安装WSLG(WSL2)