php websocket项目开发,推荐使用:Workerman

本片内容使用Workerman实现了简单的及时聊天功能,具体代码如下:

<?php
// phpinfo();
header('Content-Type: text/html; charset=utf-8');require 'vendor/autoload.php';use Workerman\Worker;$sk=new Sock();//对创建的socket循环进行监听,处理数据
$sk->run();function array_remove($arr, $key){ if(!array_key_exists($key, $arr)){ return $arr; } $keys = array_keys($arr); $index = array_search($key, $keys); if($index !== FALSE){ array_splice($arr, $index, 1); } return $arr; } class Sock{public $sockets; //socket的连接池,即client连接进来的socket标志public $ws_worker;public function __construct(){// Create a Websocket server$this->ws_worker = new Worker("websocket://0.0.0.0:8889");// 4 processes$this->ws_worker->count = 4;// Emitted when new connection come$this->ws_worker->onConnect = function($connection){echo "New connection\n";echo 'id=' . $connection->id . '    ';$this->sockets[$connection->id] = array('client'=>$connection);echo 'count=' . count($this->sockets) . '    ';};// Emitted when data received$this->ws_worker->onMessage = function($connection, $data){// Send hello $dataecho "\n".$connection->id." -> req: ".$data;$jdata = json_decode($data,true);echo "\n op: ".$jdata['op'];if($jdata['op'] == 'login'){//{'op':'login','user':user}$cs = $this->sockets[$connection->id];$cs['user'] = $jdata['user'];$this->sockets[$connection->id] = $cs;$connection->send($jdata['user'].'登录成功'); return;}else{// {'op':'chat','from_user':user,'to_user':user,'msg':msg}$deal = false;if($jdata['op'] == 'chat'){foreach ($this->sockets as $key => $value) {if($value['user'] == $jdata['to_user']){$value['client']->send($jdata['msg']);$connection->send($data);$deal = true;}}if($deal == false){$connection->send($jdata['user'].'会员不存在');}}else{$connection->send('参数异常: ' . $data);                }    }};// Emitted when connection closed$this->ws_worker->onClose = function($connection){echo "Connection closed\n";$this->sockets = array_remove($this->sockets, $connection->id);};}public function run(){Worker::runAll();        }
}

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title></title><script src="jquery.js" type="text/javascript"></script></head>
<body><input type="text" id="input" placeholder="Message…" /><hr /><pre id="output"></pre><script>var user = '';var host   = 'ws://127.0.0.1:8889';var socket = null;var input  = document.getElementById('input');var output = document.getElementById('output');var print  = function (message) {var samp       = document.createElement('samp');samp.innerHTML = message + '\n';output.appendChild(samp);return;};user = window.prompt("欢迎?","请在此输入您的姓名。");input.addEventListener('keyup', function (evt) {if (13 === evt.keyCode) {var msg = input.value;if (!msg) {return;}try {socket.send(msg);input.value = '';input.focus();} catch (e) {console.log(e);}return;}});try {socket = new WebSocket(host);socket.onopen = function () {print('connection is opened');input.focus();socket.send('{"op":"login","user":"'+user+'"}');return;};socket.onmessage = function (msg) {print(msg.data);return;};socket.onclose = function () {print('connection is closed');return;};} catch (e) {console.log(e);}</script>
</body>
</html>

使用 php socket.php 启动服务端。

js端要发起json结构的数据,如下截图:

转载于:https://www.cnblogs.com/scott-j/p/8995940.html

php websocket相关推荐

  1. mqtt+htttp+websocket

    一.介绍 1.参考网址1:WebSocket协议:5分钟从入门到精通 2.参考网址2:WebSocket 教程(阮一峰) 二.应用 1.参考网址1:从 HTTP 到 MQTT:一个移动后端案例概述 2 ...

  2. Java后端WebSocket的Tomcat实现

    转自: http://blog.chenzuhuang.com/archive/28.html http://www.cnblogs.com/xdp-gacl/p/5193279.html 一.Web ...

  3. Java Websocket实例【服务端与客户端实现全双工通讯】

    Java Websocket实例[服务端与客户端实现全双工通讯] 现很多网站为了实现即时通讯,所用的技术都是轮询(polling).轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发 出HTTP ...

  4. 物联网协议对比(HTTP、websocket、XMPP、COAP、MQTT和DDS协议)

    目录 1.HTTP和websocket 2.XMPP 3.COAP 4.MQTT协议 5.DDS 对于物联网,最重要的是在互联网中设备与设备的通讯,现在物联网在internet通信中比较常见的通讯协议 ...

  5. node.js创建WebSocket服务,并使用原生js ES6完成对WebSocket数据交互

    注意,前情提示: 本代码基于<Node.js(nodejs)对本地JSON文件进行增.删.改.查操作(轻车熟路)> 传送门Node.js(nodejs)对本地JSON文件进行增.删.改.查 ...

  6. 使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容

    使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容 原文:使用CEfSharp之旅(7)CEFSharp 拦截 http 请求 websocket 内容 版 ...

  7. 使用Node.js快速搭建WebSocket server

    原文地址:http://my.oschina.net/yushulx/blog/309413 目录[-] 安装 服务端 客户端 参考 安装 ? 1 npm install ws 服务端 server. ...

  8. python java web_Python 与 Java 使用 websocket 通信

    WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-duplex)通信--允许服务器主动发送信息给客户端. Java服务端 import java.io.IO ...

  9. Java项目:在线淘房系统(租房、购房)(java+SpringBoot+Redis+MySQL+Vue+SpringSecurity+JWT+ElasticSearch+WebSocket)

    源码获取:博客首页 "资源" 里下载! 该系统有三个角色,分别是:普通用户.房屋中介.管理员.普通用户的功能:浏览房屋信息.预约看房.和中介聊天.申请成为中介等等.房屋中介的功能: ...

  10. websocket心跳链接代码_WebSocket原理与实践(五)--心跳及重连机制

    在使用websocket的过程中,有时候会遇到网络断开的情况,但是在网络断开的时候服务器端并没有触发onclose的事件.这样会有:服务器会继续向客户端发送多余的链接,并且这些数据还会丢失.所以就需要 ...

最新文章

  1. VS Code竟然能约会,找对象不看脸,看编程水平
  2. Tir-Hi3559AV100镜像烧写
  3. laravel5.6 Session
  4. 线程通信wait与notify
  5. CentOS中使用Docker+nginx部署Vue打包的dist项目
  6. 挺起你作为一个中国人的脊梁骨
  7. flask sql外键使用_如何在SQL中使用外键?
  8. php分解字符串_php怎么把字符串分解成字符
  9. e-006 matlab,基于MATLAB进行潮流计算
  10. 【二分】【线段树】hdu6070 Dirt Ratio
  11. 屏幕共享技术及相关软件使用测评
  12. iso镜像添加软件包_ubuntu安装 win7_怎么把自己需要的程序添加到WIN7的原版ISO镜像中? - Win7之家...
  13. 自动机器学习简述(AutoML)
  14. android获取wifi的SSID
  15. V-SLAM重读(3):SVO代码阅读和调试修改
  16. scanner——04scaner进阶
  17. VS2019打包程序安装后无法运行
  18. 前端基础:100道CSS面试题总结
  19. 2022-2028年中国继电器行业市场运营格局及竞争战略分析报告
  20. JS实现文件下载的几种方法

热门文章

  1. intellij idea 13amp;14 插件推荐及高速上手建议 (已更新!)
  2. HTTP 错误 403.9 - 禁止访问:连接的用户过多 XP IIS服务器连接数的修改
  3. 2020总结--惟愿人间花满天
  4. 我司用了 6 年的 Redis 分布式限流器,很牛逼了!
  5. 「mysql优化专题」90%程序员面试都用得上的索引优化手册(5)【面试重点】
  6. springboot-springSecurity 之 http Basic认证 (四)
  7. Java专家系列:CPU Cache与高性能编程
  8. nginx:模块讲解
  9. C++面向对象基础(二)
  10. Android --- 如何更改应用程序的图标以及名称(Android studio)