服务端
$socket = 'websocket://ip:2345'
onMessage($connection,$data) {$connection->send($msg); } 监听前端传过来的信息,再发送出去
onConnect($connection){} 当客户端建立连接的时候触发
onClose($connection){} 断开的时候触发的回调
onError($connection,$code,$msg){} 错误的时候触发的回调
onWorkerstart($worker) 每个进程启动
浏览器端
ws = new WebSocket("ws://ip:2345");
ws.onopen = function(){ alert('连接成功') ws.send('xx') } 连接成功的时候触发 并给服务端发送信息
ws.onmessage = function(e){ alert('gg'+e.data) } 监听到服务端发送的信息 并答应出来
ws.send() 继续发送信息 看服务端的回应
debug和daemon方式区别 debug方式终端关闭之后workerman会随之关闭并退出 daemon方式终端关闭之后workerman继续运行
定时器
public static function onWorkeStart(){ Timer::add(10,function(){ echo "timer" } ) }
定时认证小demo
public static function onConnect($client_id){ $_SESSION['auth_time_id']=Timer::add(30,function($client_id)){ Gateway::closeClient
($client_id) },array($client_id),false }
workerman的安装
linux环境监测
curl -Ss http://www.workerman.net/check.php | php
public static function onMessage($client_id,$msg){ $msg = json_decode($msg,true); switch($msg['type']){ case 'login': Timer::del
($_SESSION['auth_timer_id']) break } }
心跳包的作用
正常情况下客户端断开连接会向服务端发送一个fin包,服务端收到后会触发onClose时间回调
但是当极端情况下,如客户端断电、网络关闭等无法发送fin包,所以需要心跳包来检测客户端是否还在连接
防火墙也会关闭长时间不通讯的socket连接 导致socket长连接断开
心跳包说明
pingInterval = 10 每10秒发送一次心跳包
pingNotResponseLimit = 2 2次不回应则断开连接
pingData = ‘{“type”:“ping”}’ 服务端发送的心跳数据
workerman原理
环境检查->变为守护进程->安装信号->创建socket监听->创建workers->监听信号
$socket = 'websocket://ip:2345'
onMessage($connection,$data) {$connection->send($msg); } 监听前端传过来的信息,再发送出去
onConnect($connection){} 当客户端建立连接的时候触发
onClose($connection){} 断开的时候触发的回调
onError($connection,$code,$msg){} 错误的时候触发的回调
onWorkerstart($worker) 每个进程启动
浏览器端
ws = new WebSocket("ws://ip:2345");
ws.onopen = function(){ alert('连接成功') ws.send('xx') } 连接成功的时候触发 并给服务端发送信息
ws.onmessage = function(e){ alert('gg'+e.data) } 监听到服务端发送的信息 并答应出来
ws.send() 继续发送信息 看服务端的回应
debug和daemon方式区别 debug方式终端关闭之后workerman会随之关闭并退出 daemon方式终端关闭之后workerman继续运行
定时器
public static function onWorkeStart(){ Timer::add(10,function(){ echo "timer" } ) }
定时认证小demo
public static function onConnect($client_id){ $_SESSION['auth_time_id']=Timer::add(30,function($client_id)){ Gateway::closeClient
($client_id) },array($client_id),false }
workerman的安装
linux环境监测
curl -Ss http://www.workerman.net/check.php | php
public static function onMessage($client_id,$msg){ $msg = json_decode($msg,true); switch($msg['type']){ case 'login': Timer::del
($_SESSION['auth_timer_id']) break } }
心跳包的作用
正常情况下客户端断开连接会向服务端发送一个fin包,服务端收到后会触发onClose时间回调
但是当极端情况下,如客户端断电、网络关闭等无法发送fin包,所以需要心跳包来检测客户端是否还在连接
防火墙也会关闭长时间不通讯的socket连接 导致socket长连接断开
心跳包说明
pingInterval = 10 每10秒发送一次心跳包
pingNotResponseLimit = 2 2次不回应则断开连接
pingData = ‘{“type”:“ping”}’ 服务端发送的心跳数据
workerman原理
环境检查->变为守护进程->安装信号->创建socket监听->创建workers->监听信号
抹了蜜