我要做个游戏,我要用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证书”。
接下来还有,缓存、证书、发布。