swoole 安装 搭建tcp服务器和websocket

1、安装swoole
wget https://github.com/swoole/swoole-src/archive/v1.9.1-stable.tar.gz
tar zxvf v1.9.1-stable.tar.gz
cd swoole-src-1.9.1-stable
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
2、配置php支持swoole
vi /usr/local/php/etc/php.ini
添加
extension=swoole.so
3、重启php-fpm
service php-fpm restart
在phpinfo页面可以看到关于swoole的选项,说明安装成功。

4.搭建Echo服务器
服务端 Server
创建一个Server.php文件并输入如下内容:

// Server
class Server
{
    private $serv;

    public function __construct() {
        $this->serv = new swoole_server("0.0.0.0", 9501);
        $this->serv->set(array(
            ‘worker_num‘ => 8,
            ‘daemonize‘ => false,
        ));

        $this->serv->on(‘Start‘, array($this, ‘onStart‘));
        $this->serv->on(‘Connect‘, array($this, ‘onConnect‘));
        $this->serv->on(‘Receive‘, array($this, ‘onReceive‘));
        $this->serv->on(‘Close‘, array($this, ‘onClose‘));

        $this->serv->start();
    }

    public function onStart( $serv ) {
        echo "Start\n";
    }

    public function onConnect( $serv, $fd, $from_id ) {
        $serv->send( $fd, "Hello {$fd}!" );
    }

    public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
        echo "Get Message From Client {$fd}:{$data}\n";
        $serv->send($fd, $data);
    }

    public function onClose( $serv, $fd, $from_id ) {
        echo "Client {$fd} close connection\n";
    }
}
// 启动服务器 Start the server
$server = new Server();

客户端 Client
创建一个Client.php文件并输入如下内容:

<?php
class Client
{
    private $client;

    public function __construct() {
        $this->client = new swoole_client(SWOOLE_SOCK_TCP);
    }

    public function connect() {
        if( !$this->client->connect("127.0.0.1", 9501 , 1) ) {
            echo "Error: {$this->client->errMsg}[{$this->client->errCode}]\n";
        }

        fwrite(STDOUT, "请输入消息 Please input msg:");
        $msg = trim(fgets(STDIN));
        $this->client->send( $msg );

        $message = $this->client->recv();
        echo "Get Message From Server:{$message}\n";
    }
}

$client = new Client();
$client->connect();

运行 Run it!
在Terminal下执行命令php Server.php即可启动服务器,在另一个Terminal下执行php Client.php,输入要发送的内容,即可发送消息到服务器,并收到来自服务器的消息。

websocket:

$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);

$server->on(‘open‘, function (Swoole\WebSocket\Server $server, $request) {
    echo "server: handshake success with fd{$request->fd}\n";
});

$server->on(‘message‘, function (Swoole\WebSocket\Server $server, $frame) {
    echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
    $server->push($frame->fd, "this is server");
});

$server->on(‘close‘, function ($ser, $fd) {
    echo "client {$fd} closed\n";
});

$server->start();

原文地址:http://blog.51cto.com/itafei/2347852

时间: 2024-10-10 22:50:24

swoole 安装 搭建tcp服务器和websocket的相关文章

74)搭建TCP服务器

基本步骤和搭建UDP服务器步骤一样: 基本步骤: 1 我们假设成 我们卖东西 2 3 第一步加载库 4 5 第二步 找个店长卖东西 --->创建socket 6 7 第三步 找个店地 -->绑定bind 8 9 第四步 店长去店门口看 去宣传 有没有人来 --->监听listen 10 11 第五步 人来了 接客 ,交给服务员 --->accept 12 13 第六步 原文地址:https://www.cnblogs.com/xiaoyoucai/p/8536010.html

java 使用netty搭建tcp服务器(hello world)

public class Program { public static void main(String[] args) throws Exception { EchoServer echoServer = new EchoServer("127.0.0.1", 8888); // 启动 echoServer.start(); } } class EchoServer { private final int port; private final String ip; public

Linux系统下安装搭建FTP服务器

FTP是File Transfer Protocol(文件传输协议),就是专门用来传输文件的协议.简单地说,支持FTP协议的服务器就是FTP服务器. FTP支持两种模式:PORT(主动).PASV(被动). PORT模式:首先FTP 客户端和服务器的TCP 21端口建立连接, 然后在这个通道上发送PORT命令,命令中包含客户端用某个端口连接,服务器收到命令后会利用数据端口(20)连接客户端那个端口. PASV模式:当开启一个FTP连接时,客户端会随机打开两个非特权端口A和B, 其中A端口和服务器

linux 下安装 搭建 svn服务器

1.下载svn http://subversion.apache.org/download 下载完成后解压,执行 ./configure --prefix=/usr/svn 提示 configure: error: no suitable APR found 2.下载并安装 apr 和 apr-util http://archive.apache.org/dist/apr/ 下载完成后安装 a)  tar -zxvf apr-1.5.2.tar.gz b)  cd apr-1.5.2/ c)  

使用Python的socket模块搭建tcp服务器与客户端

# __author__ = 'ZSnail' # socket就是一个网络通讯协议 # 服务器端 import socket server = socket.socket() server.bind(('127.0.1.1', 6969)) # 绑定要监听的端口 server.listen() # 监听 print('开始等??') # 在这里会形成阻塞,一直等到有客户连接 # conn就是客户端连过来而在服务器内生成的一个连接实例 conn, address = server.accept(

【Swoole】简单安装与创建TCP服务器

pecl install swoole PHP的异步.并行.高性能网络通信引擎,使用纯C语言编写,提供了php语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询. Swoole内置了Http/WebSocket服务器端/客户端.Http2.0服务器端. Swoole可以广泛应用于互联网.移动通信.企业软件.云计算.网络游戏.物联网(IOT).车联网.智能家居等领域. 使用PHP

一步步安装nginx搭建流媒体服务器

先安装: apt-get install g++ apt-get install g++ apt-get install build-essential 一般已经安装了 在网上下载以下的包.后面我把这些包上传到csdn资源里,以后就不用找了. nginx-1.2.3.tar.gz      :应用服务器主程序 nginx_mod_h264_streaming-2.2.7.tar.gz      :MP4流媒体支持模块. openssl-1.0.1c.tar.gz                

手把手教你搭建LyncServer2013之安装持久聊天服务器(十三)

这一节中,不得不说的就是持久聊天服务器,为Lync  Server 2013新建的一个角色,在企业版中,需要单独部署,不能和其他服务器并置,WAC服务器也是如此,因在前面的拓扑中未定义持久聊天服务器,下面我们开始新建拓扑并进行发布了,在前端服务器上打开拓扑生成器,并下载当前拓扑信息 右键持久聊天池,新建持久聊天池 输入FQDN并选择"单计算机池" 我后续想测试下合规性,所以这里选了启用合规性,可以根据自己组织内部需求进行选择,输入显示名称 定义SQL Server存储,我这里仍然使用镜

Node安装及搭建简单服务器

注:本文安装系统为mac,windows及其他系统下载对应安装包 ,mac下载后的安装包为apk文件,windows为msi文件. 安装 1.在网上下载mongodb 安装包,官方网站2.双击下载文件,按步骤安装,安装完成后就可以使用node和npm命令了.3.打开终端 输入 node -v,终端将提示安装的node版本.4.nodejs运行环境安装成功. 常用的指令: npm install moduleNames:安装Node模块 安装完毕后会产生一个node_modules目录,其目录下就