|
|
@@ -0,0 +1,72 @@
|
|
|
+<?php
|
|
|
+ini_set('display_errors', 'on');
|
|
|
+error_reporting(E_ALL);
|
|
|
+define('WORKERMAN_ROOT_DIR', __DIR__.'/../../../');
|
|
|
+include '../GameBuffer.php';
|
|
|
+
|
|
|
+$sock = stream_socket_client("tcp://115.28.44.100:8282");
|
|
|
+if(!$sock)exit("can not create sock\n");
|
|
|
+
|
|
|
+$buf = new GameBuffer();
|
|
|
+$buf->body = rand(1,100000000);
|
|
|
+
|
|
|
+fwrite($sock, $buf->getBuffer());
|
|
|
+$ret = fread($sock, 1024);
|
|
|
+$ret = GameBuffer::decode($ret);
|
|
|
+if(isset($ret['to_uid']))
|
|
|
+{
|
|
|
+ echo "chart room login success , your uid is [{$ret['to_uid']}]\n";
|
|
|
+ echo "use uid:words send message to one user\n";
|
|
|
+ echo "use words send message to all\n";
|
|
|
+}
|
|
|
+
|
|
|
+stream_set_blocking($sock, 0);
|
|
|
+stream_set_blocking(STDIN, 0);
|
|
|
+
|
|
|
+$read = array(STDIN, $sock);
|
|
|
+
|
|
|
+$write = $ex = array();
|
|
|
+while(1)
|
|
|
+{
|
|
|
+ $read_copy = $read;
|
|
|
+ if($ret = stream_select($read_copy, $write, $ex, 1000))
|
|
|
+ {
|
|
|
+ foreach($read as $fd)
|
|
|
+ {
|
|
|
+ // 接收消息
|
|
|
+ if((int)$fd === (int)$sock)
|
|
|
+ {
|
|
|
+ $ret = fread($fd, 102400);
|
|
|
+ if(!$ret){continue;exit("connection closed\n ");}
|
|
|
+ $ret = GameBuffer::decode($ret);
|
|
|
+ echo $ret['from_uid'] , ':', $ret['body'], "\n";
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 向某个uid发送消息 格式为 uid:xxxxxxxx
|
|
|
+ $ret = fgets(STDIN, 10240);
|
|
|
+ if(!$ret)continue;
|
|
|
+ if(preg_match("/(\d+):(.*)/", $ret, $match))
|
|
|
+ {
|
|
|
+ $uid = $match[1];
|
|
|
+ $words = $match[2];
|
|
|
+ $buf = new GameBuffer();
|
|
|
+ $buf->header['cmd'] = GameBuffer::CMD_USER;
|
|
|
+ $buf->header['sub_cmd'] = GameBuffer::SCMD_SAY;
|
|
|
+ $buf->header['to_uid'] = $uid;
|
|
|
+ $buf->body = $words;
|
|
|
+ fwrite($sock, $buf->getBuffer());
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 向所有用户发消息
|
|
|
+ $buf = new GameBuffer();
|
|
|
+ $buf->header['cmd'] = GameBuffer::CMD_USER;
|
|
|
+ $buf->header['sub_cmd'] = GameBuffer::SCMD_BROADCAST;
|
|
|
+ $buf->body = trim($ret);
|
|
|
+ fwrite($sock, $buf->getBuffer());
|
|
|
+ continue;
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|