后端代码
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 < 0) {
return false;
}
$result = socket_connect($socket, $this->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);
}