关于swoole:基于-Swoole-搭建-WebSocket-服务详解

4次阅读

共计 1523 个字符,预计需要花费 4 分钟才能阅读完成。

本节将会详解以下 4 个问题:

什么是 swoole?

什么是 Websocket?

如何基于 Swoole 构建 WebSocket 服务?

基于 Swoole 的 WebSocket 服务和 Http 服务是什么关系?

一、Swoole 简介

Swoole 是一个面向生产环境的 PHP 异步网络通信引擎,使 PHP 开发人员可能编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP 和 WebSocket 服务。Swoole 可广泛应用于互联网、挪动通信、企业软件、云计算、网络游戏、物联网 (IOT)、车联网、智能家居等畛域。应用 PHP+Swoole 作为网络通信框架,能够大大提高企业 IT R&D 团队的工作效率。

Swoole 反对用于构建各种服务器,包含 HTTP 服务器、websocket 服务器、tcp 服务器、redis 服务器等等。咱们在这里应用 websocket 服务器。

二、WebSocket 介绍

WebSocket 是通过繁多 TCP 连贯进行全双工通信的协定。WebSocket 通信协议在 2011 年被 IETF 指定为规范 RFC 6455,并由 RFC7936 进行了补充。WebSocket API 也被 W3C 指定为规范。WebSocket 使得客户端和服务器之间的数据交换更加容易,并容许服务器被动将数据推送到客户端。在 WebSocket API 中,浏览器和服务器只须要握手一次,就能够间接创立长久连贯,进行双向数据传输。

简略来说,websocket 协定实现了浏览器和服务器之间的双向通信。Html5 原生反对 websocket 协定。

三、如何基于 Swoole 构建 WebSocket 服务

应用以下代码创立一个名为 ws_server.php 的新文件:

您能够通过在命令行上执行以下命令来启动 WebSocket 服务。该命令如下所示:

php ws_websocket.php

能够在 Chrome 浏览器进行测试,JS 代码如下:

在 Chrome 浏览器的管制台上执行上述 js 代码,能够看到以下输入后果:

Connected to WebSocket server.

如果要从客户端向服务器发送数据,能够通过 WebSocket 的 send 函数向服务器发送信息:

socket.send (‘ 发送的内容 ‘);//socket 为 WebSocket 的对象实例

四、基于 Swoole 的 WebSocket 服务和 Http 服务的关系

WebSocket 服务是基于 Http 服务的长连贯服务器,客户端首现会发送 Http 申请与服务器握手。当握手胜利时,将触发 onOpen 事件。在 onOpen 函数中,能够取得一个 $request 对象,该对象蕴含与 Http 握手相干的信息,如 GET 参数、Cookie、Http 头信息等。

当客户端和服务器之间的连贯建设后,客户端和服务器能够进行双向通信。连贯建设后,当客户端向服务器发送信息时,服务器会触发 onMessage 事件回调;服务器能够调用 $server->push () 向客户端发送音讯。服务器能够设置 onHandShake 事件回调来手动解决 WebSocket 握手。

注意事项:

Swole Http server 是 swole Http server 的子类,内置了对 Http 的反对。swole WebSocket server 是 swole http server 的子类。在内置 WebSocket 的反对下,swoole_client 无奈与 WebSocket 服务器间接通信。swoole_client 是一个 TCP 客户端,必须实现 WebSocket 协定能力与 WebSocket 服务进行通信。WebSocket 服务除了提供 WebSocket 性能外,其实还能够解决 Http 长连贯。只须要 onRequest 事件监控就能够实现 Comet 计划的长 Http 轮询。

残缺附件点此下载

正文完
 0