需要安装 swoole扩展

在linux系统下通过命令行执行php文件。(win下没有swoole扩展)

示例代码

1. 前端websocket


<html>
<head><meta charset="UTF-8"><title>Web sockets test</title><script type="text/javascript">var ws;function ToggleConnectionClicked() {   if( typeof(ws) != 'undefined' && ws.readyState == 1 ) {alert('已连接服务器,请勿重复连接!');return false;}try {ws = new WebSocket("ws://192.168.198.221:9501");//连接服务器,改成你服务器地址ws.onopen = function(event){alert("已经与服务器建立了连接\r\n当前连接状态:"+this.readyState);};ws.onmessage = function(event){// alert("接收到服务器发送的数据:\r\n"+event.data);var chat_content = document.getElementById("chat_content");chat_content.innerHTML = chat_content.innerHTML+event.data+"<br />";// console.log(event.data);};ws.onclose = function(event){alert("已经与服务器断开连接\r\n当前连接状态:"+this.readyState);};ws.onerror = function(event){alert("WebSocket异常!");};} catch (ex) {alert(ex.message);      }};function SendData() {try{var content = document.getElementById("content").value;if(content){ws.send(content);}}catch(ex){alert(ex.message);}};function seestate(){if( typeof(ws) == 'undefined' ) {alert('还未连接服务器!');return false;}alert(ws.readyState);};function ClearChatContent(){document.getElementById("chat_content").innerHTML = "";};</script>
</head>
<body><button id='ToggleConnection' type="button" onclick='ToggleConnectionClicked();'>连接服务器</button><br /><br /><textarea id="content" ></textarea><button id='ToggleConnection' type="button" onclick='SendData();'>发送</button><br /><br /><button id='ToggleConnection' type="button" onclick='seestate();'>查看状态</button><br /><br /><button type="button" onclick='ClearChatContent();'>清屏</button><br /><br /><div id="chat_content"></div>
</body>
</html>

2. 后台php代码

<?php# 创建websocket服务器对象,监听0.0.0.0:9502端口$ws = new swoole_websocket_server("0.0.0.0", 9501);# 监听WebSocket连接打开事件$ws->on('open', function ($ws, $request) {// var_dump($request->fd, $request->get, $request->server);echo $request->server['remote_addr']."已连接\n";$ws->push($request->fd, "hello, welcome.your ip is {$request->server['remote_addr']}\n");# 广播foreach($ws->connections as $fd) {$ws->push($fd, "用户{$request->fd}已登录聊天");}});# 监听WebSocket消息事件$ws->on('message', function (swoole_websocket_server $server, $frame) {echo $frame->fd." Message: {$frame->data}\n";# 广播foreach($server->connections as $fd) {$server->push($fd, "用户{$frame->fd}说: {$frame->data}");}});# 监听WebSocket连接关闭事件$ws->on('close', function ($ws, $fd) {# var_dump($ws, $fd);echo "client-{$fd} is closed\n";});$ws->start();

3. 通过命令行进行启动php

./php /www/wwwroot/a/testa.php

4.测试

分别通过两个不同的浏览器打开前端H5页面(本人使用火狐浏览器和360浏览器),并连接服务器

火狐浏览器

360浏览器

发送信息

后台显示

小礼物走一走,来简书关注我

作者:00天火00
链接:https://www.jianshu.com/p/f00e45498149

websocket-php简易聊天(保持网页数据通讯)相关推荐

  1. 基于Node.js + WebSocket 的简易聊天室

    代码地址如下: http://www.demodashi.com/demo/13282.html Node.js聊天室运行说明 Node.js的本质就是运行在服务端的JavaScript.Node.j ...

  2. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

    今天没有延续上一篇讲的内容,穿插一段小插曲,WebSocket 实时数据通讯同步的问题,今天我们并不是很纯粹地讲 WebSocket 相关知识,我们通过 WebGL 3D 拓扑图来呈现一个有趣的 De ...

  3. 原创 回归前端学习第21天-实现俄罗斯方块小游戏3(深入了解Websocket~优化简易聊天室)

    对昨天的简易聊天室进行优化 增加一个mes对象,将传送的数据放在对象里 增加一个mes对象,将传送的数据放在对象里 wsServer.js中替换代码 broadcast(conn.nickname + ...

  4. Vue3 -- 基于Websocket实现简易聊天室

    文章目录 标题 代码地址 表情包资源 chat.data.ts index.vue 标题 接上一篇博文 这里使用 Vue3 + Typescript + Websocket 实现在线聊天功能的前端部分 ...

  5. Java WebSocket实现简易聊天室

    一.Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求.Socket的英文原义是"孔"或 ...

  6. websocket实现简易聊天室

    websocket支持全双工通信,也就是客户端和服务端双向通信.以前都是通过http轮询的方式实现实时的,这非常耗性能.Websocket不仅能节省资源和带宽,还能实现长链接的作用 前端通过创建Web ...

  7. SpringBoot整合WebSocket实现简易聊天室

    文章目录 什么是WebSocket ? WebSocket通信模型 为什么需要WebSocket Websocket与http的关系 SpringBoot集成WebSocket 什么是WebSocke ...

  8. nodejs websocket 实现简易聊天室功能

    文章目录 1. 服务端 app.js 代码 2. 客户端 app.html 代码 3. 样式代码 app.css 4. nodemon 辅助开发 首先说明,以下代码都是基于 Nodejs+webSoc ...

  9. webSocket——Vue2简易聊天室

    WebSocket原生实现 WebSocket-Vue2 WebSocket-Vue3 Vue2版本实现 前端实现 目录结构 login.vue 登录 <template><div& ...

最新文章

  1. Java,Hello world 欢迎进入Java世界
  2. common lisp里的几个操作符
  3. Git(创建版本库)
  4. 解决Win10下_findnext()异常
  5. MySQL的一些基础操作
  6. NYOJ 905 卡片游戏
  7. apache apollo php,php windows環境 安裝 Apache-apollo + phpMQTT 實現發送 MQTT
  8. 搞工程和搞电子的人摆摊能做什么?
  9. android 代码植入,Android Studio之Debug(一):运行期代码植入
  10. wampserver 安装phpredis扩展
  11. [Unity2018.2]ShaderGraph更新详解
  12. 软件测试--selenium脚本编写注意点(二)
  13. Spring Cloud Netflix之Eureka上篇
  14. 华为hcip认证题库在哪找?HCIP如何考取?
  15. 兼容性问题以及解决方案
  16. jquery 报错提示Uncaught TypeError: $ is not a function
  17. flink各版本变化和新增特性
  18. PyCharm 快速批量注释及取消注释
  19. TTL与非门多余的输入端处置办法及其优缺点
  20. 为什么css放头部、js放尾部

热门文章

  1. MCP2515 驱动程序
  2. 在Google搜索结果显示原始链接
  3. 国网山东电力拓展电能替代领域
  4. Tensorflow——反卷积
  5. 基于Matlab/simulink的双馈风力发电并网系统
  6. matlab 滤波器设计 coe_现代雷达系统分析与设计
  7. 苹果android怎么升级,微信系统大升级,苹果安卓手机如何升级更新为最新版微信8.0?...
  8. TI DM6437 EDMA3使用总结
  9. 使用吉布斯采样求解LDA模型
  10. 前端七十二变之html和css进阶