请记住我们的网址:3zcode.com。也就是“三只源码"

小程序说:我websocket准备好了,你php不打算用下GatewayWorker吗

教程 admin 2403℃ 0评论

我要做个游戏,我要用websocket。
于是,我从别的地方,抄来小程序的代码。


var socketOpen = false;
var socketMsgQueue = [];
//链接信息
uni.connectSocket({
  url: 'wss://www.example.com/socket'
});
//链接成功
uni.onSocketOpen(function (res) {
  socketOpen = true;
  for (var i = 0; i < socketMsgQueue.length; i++) {
    sendSocketMessage(socketMsgQueue[i]);
  }
  socketMsgQueue = [];
console.log('WebSocket连接已打开!');
});

//链接错误
uni.onSocketError(function (res) {
  console.log('WebSocket连接打开失败,请检查!');
});

//发送信息
function sendSocketMessage(msg) {
  if (socketOpen) {
    uni.sendSocketMessage({
      data: msg
    });
  } else {
    socketMsgQueue.push(msg);
  }
}

少女般的,衣着轻纱,一览无余。小程序已准备好,接下来看php得。
php的websocket有现成的框架。叫GatewayWorker,他的详细介绍(文档)在这里:http://doc2.workerman.net
如果想得到他,可以去这里:http://www.workerman.net/download/GatewayWorker-for-win.zip

废话不说,下载、解压到项目目录。进入GatewayWorker/Applications/YourApp,我们需要修改的是Events.php
在这里面写业务逻辑。


    public static function onConnect($client_id)
    {
        // 向当前client_id发送数据 
        Gateway::sendToClient($client_id, "Hello $client_id\r\n");
        // 向所有人发送
        Gateway::sendToAll("$client_id login\r\n");

        //加入分组
        //生成分组数据
//      $cgroup_id=$cgroup_id+1;
//      Gateway::joinGroup($client_id, $req_data['group']);
    }
    
   /**
    * 当客户端发来消息时触发
    * @param int $client_id 连接id
    * @param mixed $message 具体消息
    */
   public static function onMessage($client_id, $message)
   {
   	    //判断是否是新建房间的
// 	    if($client_id)
		var_dump($message);
        // 向所有人发送 
        Gateway::sendToAll("$client_id said ".$message."\r\n");
   }
   
   /**
    * 当用户断开连接时触发
    * @param int $client_id 连接id
    */
   public static function onClose($client_id)
   {
       // 向所有人发送 
       GateWay::sendToAll("$client_id logout\r\n");
   }

三个回调方法,刚刚够用,刚刚好。
当你做好一切准备之后,你可以双击这个批处理文件“start_for_win.bat”开启一个新的天地。
对了,当你开启的时候可能报错,据不完全统计,需要修改php.ini,开始权限。

经过这样几步操作,如果运气够好的话,小程序应该和php搭上话了。具体说什么做什么,自己看着办吧。
对了,如果一直测试有问题,可能没有选择小程序的“不校验合法域名、web-view、TLS版本以及HTTPS证书”。
接下来还有,缓存、证书、发布。

转载请注明:三只源码 » 小程序说:我websocket准备好了,你php不打算用下GatewayWorker吗

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址