linux下 安装swoole

http://blog.csdn.net/aojianmo2012/article/details/55046571

主要看的是这个

哪里提示命令不执行 就下载那个命令

php安装swoole

1. 下载swoole安装

``` wget http://pecl.php.net/get/swoole-1.9.1.tgz tar -zxvf swoole-1.9.1.tgz cd swoole-1.9.1 phpize ./configure make make install ```

2. 在php.ini添加swoole.so

``` extension=swoole.so ```

3. php文件

``` <?php $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, "这是服务器消息!"); }); $server->on('close', function ($ser, $fd) { echo "client {$fd} closed\n"; }); $server->start(); ```

4. html文件

``` <!DOCTYPE html> <html> <head> <title>欢迎使用swoole!</title> </head> <body> <script type="text/javascript"> // 创建一个Socket实例 var socket = new WebSocket('ws://192.168.1.127:9501/'); // 打开Socket socket.onopen = function(event) { // 发送一个初始化消息 socket.send('我是客户端并且正在监听。'); // 监听消息 socket.onmessage = function(event) { console.log('客户端接收到一个消息。',event); }; // 监听Socket的关闭 socket.onclose = function(event) { console.log('客户端通知套接字已关闭。',event); }; // 关闭Socket.... //socket.close() }; </script> <h1>欢迎使用swoole!</h1> </body> </html> ```

这是centos7的命令

5. 打开防火墙9501端口

``` firewall-cmd --zone=public --add-port=9501/tcp --permanent systemctl restart firewalld ```

6.. 启动swoole服务

``` php /usr/local/nginx-1.11.5/html/index.php

启动服务后 访问网页就可以看到效果了

https://wiki.swoole.com/wiki/page/476.html 创建TCP服务器

程序代码

server.php

//创建Server对象,监听 127.0.0.1:9501端口 $serv = new swoole_server("127.0.0.1", 9501); //监听连接进入事件 $serv->on('connect', function ($serv, $fd) { echo "Client: Connect.\n"; }); //监听数据接收事件 $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, "Server: ".$data); }); //监听连接关闭事件 $serv->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); //启动服务器 $serv->start();

这里就创建了一个TCP服务器,监听本机9501端口。它的逻辑很简单,当客户端Socket通过网络发送一个 hello 字符串时,服务器会回复一个 Server: hello 字符串。

swoole_server是异步服务器,所以是通过监听事件的方式来编写程序的。当对应的事件发生时底层会主动回调指定的PHP函数。如当有新的TCP连接进入时会执行onConnect事件回调,当某个连接向服务器发送数据时会回调onReceive函数。

  • 服务器可以同时被成千上万个客户端连接,$fd就是客户端连接的唯一标识符
  • 调用 $server->send() 方法向客户端连接发送数据,参数就是$fd客户端标识符
  • 调用 $server->close() 方法可以强制关闭某个客户端连接
  • 客户端可能会主动断开连接,此时会触发onClose事件回调

执行程序

php server.php

在命令行下运行server.php程序,启动成功后可以使用 netstat 工具看到,已经在监听9501端口。这时就可以使用telnet/netcat工具连接服务器。

telnet 127.0.0.1 9501 hello Server: hello

无法连接到服务器的简单检测手段

  • 在Linux下,使用netstat -an | grep 端口,查看端口是否已经被打开处于Listening状态
  • 上一步确认后,检查防火墙问题
  • 注意服务器所使用的IP地址,如果是127.0.0.1回环地址,则客户端只能使用127.0.0.1才能连接上

只有当你连接这个端口的时候 才会检测出来

使用的时候要使用本机的ip地址 使用127.0.0.1 可能出不来效果

猜你喜欢

转载自blog.csdn.net/sunsijia21983/article/details/84614054
今日推荐