PHP+websocket 实现数据推送,数据刷新
后端代码
namespace tools;/** * Created by PhpStorm. * User: liangrujiang * Date: 2018/12/17 * Time: 12:14 * socket发送处理类 */class Socket{ private $post=xxxx; //端口 private $host='xxxxxxx'; //ip /** * 构造函数 * * @param string $host * @param int $port * @param string $user * @param string $password * @param string $db_name * @param string $charset */ public function __construct($host='',$post='') { if(!empty($host)){ $this->host=$host; } if(!empty($post)){ $this->post=$post; } } /* * 消息发送 * */ public function send($service,$clientid,$data){ $send_data=array(); $send_data['service']=$service; $send_data['clientid']=$clientid; $send_data['data']=$data; $re=$this->sendsocket(json_encode($send_data)); return $re; } /* * 发送消息到客户端 * */ public function sendsocket($send_data){ error_reporting(E_ALL); set_time_limit(0); $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); if ($socket host, $this->post); if ($result < 0) { return false; } if(!socket_write($socket, $send_data, strlen($send_data))) { return false; } while($out = socket_read($socket, 8192)) { return $out; } socket_close($socket); return 1; }}
后端数据推送:
public function test(){ $clientId = "888888"; $socket = new Socket(); $service = 'test'; $res = $socket->send($service,$clientId,'');}
前端数据接收:
let websock = ''; const initWebSocket =() =>{ //初始化weosocket websock = new WebSocket('ws://ip:端口'); websock.onmessage = websocketonmessage; websock.onopen = websocketonopen; websock.onerror = websocketonerror; websock.onclose = websocketclose; } const websocketonopen =() =>{ //连接建立之后执行send方法发送数据 let actions = {"clientid": "888888","clientkey": "888888","service": "auth","data": {}}; websocketsend(JSON.stringify(actions)); } const websocketonerror = () =>{//连接建立失败重连 initWebSocket(); } const websocketonmessage = (e) =>{ //数据接收 //数据处理接收 }; const websocketsend =(Data) =>{//数据发送 websock.send(Data); } const websocketclose = (e) =>{ //关闭 console.log('断开连接',e); }