composer ?require ?workerman/gateway-worker
<?phprequire_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使用长连接
原文地址:http://blog.51cto.com/12173069/2126210