- 安装:
composer require workerman/gateway-worker
- 服务端:
<?php require_once "vendor/autoload.php"; use Workerman\Worker; use GatewayWorker\Gateway as gate; use GatewayWorker\BusinessWorker; use GatewayWorker\Register; use GatewayWorker\Lib\Gateway; use Medoo\Medoo; $super = array(); $gateway = new gate("websocket://0.0.0.0:2345"); $gateway->count = 4; $gateway->name = 'gateway'; $gateway->registerAddress = '127.0.0.1:1234'; $business = new BusinessWorker(); $business->name = 'business'; $business->count = 4; $business->registerAddress = '127.0.0.1:1234'; $register = new Register('text://0.0.0.0:1234'); $register->name = 'register'; class Events{ public static function onConnect($client_id){ $arr = array( 'remote_ip'=>$_SERVER['REMOTE_ADDR'], 'remote_port'=>$_SERVER['REMOTE_PORT'], 'gate_ip'=>$_SERVER['GATEWAY_ADDR'], 'gate_port'=>$_SERVER['GATEWAY_PORT'], 'client_id'=>$_SERVER['GATEWAY_CLIENT_ID'] ); $ret = json_encode($arr); return GateWay::sendToCurrentClient($ret); } public static function onMessage($client_id, $message){ return GateWay::sendToCurrentClient($message); } public static function onClose($client_id){ GateWay::sendToAll("client[$client_id] logout\n"); } } Worker::runAll();
- 客户端:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="text"> <br> <input type="button" value="提交"> <script> var ws = new WebSocket('ws://192.168.8.81:2345') ws.onopen = function(data) { console.log('连接开始\n') } ws.onmessage = function(data) { console.log('接收消息:'+data.data) } ws.onclose = function(data) { console.log('关闭连接\n') } ws.onerror = function(data) { console.log('遇到错误\n') } var text = document.getElementsByTagName('input')[0] var button = document.getElementsByTagName('input')[1] button.onclick = function(){ var val = text.value ws.send(val) } </script> </body> </html>
- 测试:
php使用长连接
猜你喜欢
转载自blog.51cto.com/12173069/2126210
今日推荐
周排行