文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

swoole中websocket连接的案例

2023-06-14 06:04

关注

这篇文章主要介绍swoole中websocket连接的案例,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

首先我先介绍我的运行环境是直接放在外网服务器的,程序运行环境我就不多说了大家可以参考swoole官网,我是直接通过ip 进行访问的,在这其中小编遇到一个坑,那就是我们让htpp服务器或者websocket监听的端口 必须要到服务器上开放,小编的阿里云服务器要到安全组里面去设置放行端口,出入方向都要设置。否则你会发现你通过ip:端口 是无法访问服务器的

在这里我介绍下两种连接websocket服务器的方法

通过访问http服务器然后访问我们的html页面连接我们的websouket服务器,这样我们就需要3个文件。1 http.php  2 ws.php 3 ws.html 简单贴下我的图,也是参考官方文档写的

http.php

<?php//实例化$http_server = new swoole_http_server('0.0.0.0',9501);//服务器配置$http_server->set(    [        'enable_static_handler' => true,        'document_root' => '/www/wwwroot/test_project/swoole',    ]);$http_server->on('request',function($request ,$response){    //print_r($request->get);    //设置响应头信息    $response->cookie('xyj','hello',86400);    //服务器返回信息    $response->end('http_server' . json_encode($request->get));});$http_server->start();

ws.php

<?php//创建websocket服务器对象,监听0.0.0.0:9502端口$ws = new swoole_websocket_server("0.0.0.0", 9502);$ws->set(    [        'enable_static_handler' => true,        'document_root' => '/www/wwwroot/test_project/swoole',    ]);//监听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();

ws.html

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport"          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>Document</title></head><body><h2>hello swoole 测试</h2></body></html><script>    var wsServer = 'ws://:9502';    var websocket = new WebSocket(wsServer);    websocket.onopen = function (evt) {        websocket.send('hello swoole!!!');        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);    };</script>

如果是在本地测试环境运行那么wsServer = 'ws://127.0.0.1:9502',如果是外网 那么127.0.0.1 就要改成你浏览器上所访问的地址,这里的端口必须要和你websocket 服务器端口一致否则无法访问的

准备工作做好了那么我们就开始访问下websocket,首先在终端 运行http.php 和 ws.php, 正常情况下是这样swoole中websocket连接的案例如果遇到错误一般常见的就是端口被占用,如果是swoole扩展没装好或者是语法错误,那么请在仔细的读啃下官方文档。

如果是端口被占用我们可以使用 lsof -i:9501 命令查看 端口信息, 在kill之前请先认真的看下 该端口是否是重要端口,不要盲目的kill 。

还有一种就是我们开启过http.php 在关闭后 可能被占用的端口没有及时的释放,当我们再次php http.php的时候他也会抛出端口被占用的错误,这里我们可以用 这个命令 netstat -ntlp 来查看tcp监听的端口,其父进程 kill 然后在运行就ok了,继续使用这个命令来查看tcp端口。

走到这里我们的两个服务器都已经开启了 。我们就可以通过浏览器访问了,在浏览器上输入地址:9501 , 此时这里的端口是要个http服务器的端口一致而不是websocket的端口。

关于第二种访问就是 我们只开启ws.php  在浏览器上访问和第一种是一样的,但是此时的端口就要变成websocket的端口了,展示页面和第一种是一样的。

以上是“swoole中websocket连接的案例”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯