一分一毛也是爱

微信

微信

支付宝

支付宝

观海听潮

观海听潮博客

登录
还没有账号?去注册
观海听潮

观海听潮博客

注册
×

我的名片

网名:观海听潮

职业:PHP开发工程师

现居:山东省-青岛市

Email:[email protected]

网站统计

  • 观海听潮•博客
  • 77篇
  • 149条
  • 110370次
  • 263次
  • 美国弗吉尼亚州

您现在的位置是:首页  > 技术杂谈  > swoole swoole

观海听潮

swoole的简单使用

观海听潮 464天前 1090 0条评论
摘要
swoole的简单使用,本人也是今天刚接触,有错误的希望能及时更正。

1、tcp服务:

创建server.php文件,内容如下:

<?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();

打开xshell端口:运行php server.php 会出现:

截图 (15).png

然后在另外打开一个窗口,运行telnet 127.0.0.1 9501

rpm -qa | grep telnet //检查telnet是否安装

如果没有安装telnet,请安装,命令如下:

yum list telnet*  //查看telnet相关的安装包 

yum install telnet-server  //安装telnet服务

yum install telnet.* //安装telnet客户端

然后输入hello,回车就会出现Server: hello

2、udp服务:

创建udp_server.php,内容如下:

<?php

//创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP

$serv = new swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);

//监听数据接收事件

$serv->on('Packet', function ($serv, $data, $clientInfo) {

$serv->sendto($clientInfo['address'], $clientInfo['port'], "Server: ".json_encode($clientInfo).':'.$data);

var_dump($clientInfo);

});

//启动服务器

$serv->start();

打开窗口运行php udp_server.php,然后在新的窗口运行netcat -u 127.0.0.1 9502,报错:

截图 (16).png

需要安装netcat,命令如下:

wget https://ncu.dl.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz

tar -zxvf netcat-0.7.1.tar.gz -C /usr/local

cd /usr/local

mv netcat-0.7.1 netcat

cd /usr/local/netcat

./configure

make && make install

安装成功后重新运行netcat -u 127.0.0.1 9502,然后输入hello,返回:

截图 (17).png

3、web服务:

创建http_server.php,内容如下:

<?php

$http = new swoole_http_server("0.0.0.0", 9503);

$http->on('request', function ($request, $response) {

  if ($request->server['path_info'] == '/favicon.ico' || $request->server['request_uri'] == '/favicon.ico') {

return $response->end();

}

var_dump($request->get, $request->post);

$response->header("Content-Type", "text/html; charset=utf-8");

$response->end("<h1>Hello Swoole. #".rand(1000, 9999)."</h1>");

});

$http->start();

在窗口运行php http_server.php

然后在浏览器上执行:你服务器的ip+9503,我的是:

截图 (18).png

4、websocket服务:

创建ws_server.php,内容如下:

<?php

//创建websocket服务器对象,监听0.0.0.0:9502端口

$ws = new swoole_websocket_server("0.0.0.0", 9502);

//监听WebSocket连接打开事件

$ws->on('open', function ($ws, $request) {

var_dump($request->fd, $request->get, $request->server);

$ws->push($request->fd, "hello, welcome\n");

});

//监听WebSocket消息事件

$ws->on('message', function ($ws, $frame) {

echo "Message: {$frame->data}\n";

$ws->push($frame->fd, "server: {$frame->data}");

});

//监听WebSocket连接关闭事件

$ws->on('close', function ($ws, $fd) {

echo "client-{$fd} is closed\n";

});

$ws->start();

在窗口执行php ws_server.php

然后在浏览器上新打开一个网页,或者旧网页也可以,只要不是https的就行。打开F12,在console中输入

var wsServer = 'ws://106.12.52.76:9502';//这个也是你自己服务器的ipvar websocket = new WebSocket(wsServer); websocket.onopen = function (evt) {    console.log("Connected to WebSocket server."); }; websocket.onclose = function (evt) {    console.log("Disconnected"); }; websocket.onmessage = function (evt) {    console.log('Retrieved data from server: ' + evt.data); }; websocket.onerror = function (evt, e) {    console.log('Error occured: ' + evt.data); };

报错:

截图 (19).png

原因是9502这端口号不是开放的。开放端口命令:

查看开放的端口:

firewall-cmd --list-ports

 添加开放端口:

firewall-cmd --zone=public --add-port=9502/tcp --permanent

 重启防火墙:

systemctl restart firewalld.service

最后执行结果如下:

截图 (20).png

上一篇:linux安装swoole

下一篇:公众号基本配置

讨厌 (0)
微博logo QQ空间logo QQlogo 豆瓣logo 人人logo 百度贴吧logo 有道云笔记logo

文章评论

表情表情
×
图片图片

评论列表