artsungames
目前的SDK当新注册用户成功后,在Unity客户端该用户会自动登录,然而用 var objId = AVUser.CurrentUser.Get<AVObject>("Obj1").ObjectId; 时会出错,提示: KeyNotFoundException: The given key was not present in the dictionary. System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String key) (at /Users/buil…
感谢回复,你的意思是为什么没在本地存自定义的数据吗? 这个问题我现在是这样规避的:将上述自定义数据改为before_save中进行新建,这样当unity客户端注册成功并默认自动登录后,是用于该新建的自定义数据的。这样的方案还会节约一次save,比旧方案好。然而旧方案所述问题也许是隐藏的bug。 另外顺便请问一下,在云函数中新建objectA、新建objectB, objectA.set('key1', bojectB) 、 objectA.save() ,做了这几个操作后,虽然没有显式调用 objectB.save() ,但objectA和objectB都会被save了。这中间是否节约了一次s…
分享给大家一段轮询整个表的代码,经测试可用: def queryAllWithHandler(className, handler): """遍历表里所有数据,并对数据执行handler(data) 具体实现是根据createdAt时间排序,先查询并处理最早建立的数据(因此支持在操作未完成时若手动添加了新数据) """ Class = leancloud.Object.extend(className) query = Class.query allDataCompleted = False batch = 0 limit = 1000 while not allDataCompleted: …
Python的: [python代码分享]轮询整个表 技术分享 分享给大家一段轮询整个表的代码,经测试可用: def queryAllWithHandler(className, handler): """遍历表里所有数据,并对数据执行handler(data) 具体实现是根据createdAt时间排序,先查询并处理最早建立的数据(因此支持在操作未完成时若手动添加了新数据) """ Class = leancloud.Object.extend(className) query = Class.query allDataCompleted = False batch = 0 limit = 1…
我自己还没遇到过,就是不太会写健壮的try...except所以才有这个疑问。目前如果执行时是大量的耗时操作,感觉服务器会把那些请求都放在一个队列里一直执行,直到全部完成。虽然我还没遇到,但中间如果会有异常,估计是会中断的。 要保证这个函数一定正确执行完成,难道是要用while循环把try...except包含在其中,只要except了就重新执行直到没出错?
我的小游戏今天测试大概才5、6个人,3个小时,就超过了开发版的API调用次数限制,我看网页上说的开发版API调用限制是30000/天。 请问商用版API调用是什么价格的收费?是否指的就是对象存储次数的意思(1元/万次)? 另外我是第一次开发网络游戏,请问我这个数据API存储的访问量设计是不是有问题啊,那么快就用了那么多。 我在考虑如何进行重构,有没有办法得知某一条云函数调用API的量啊? 谢谢~
感谢回复! 我目前用了4个自定义类,每个用户各1个自定义的“userData”表、每个userData会引用card表中多个数据、一个保存临时card数据的cardCopy表、还一个类似于装备表(一张卡多个装备)。因为这样的话云函数每调用一次,在服务器端都会查询好几次、以及存储删除等操作,就导致API调用过多。 我思考后计划重构为只用一个表,所有的数据全部存在userData中,虽然会让这个表的数据结构非常复杂,但根据昨天的API调用统计,这样会节省一半的API调用。但是重构后的调用数量级也很可怕,3万调用才支持20个玩家玩3小时,跟你之前提到支持上千用户也差的很远。我是个人辞职自学的开发,比…
leeyeh: 云引擎 谢谢!我再仔细梳理一下自己的代码,看看有没有可以优化的地方。 1 4个表合成1个,能节省一半API调用,这个优化不好吗? 2 请问“可以使用内存”是什么意思?我有一些热点的固定的游戏配置数据是写死在python代码中而不是保存在存储服务中,这就算是利用了内存吧。但是这必须是固定不能改变的数据,如果需要改动,就需要改代码后重新deploy一次。是不是指的使用redis(1元128MB/天的云缓存实例)? 3 综合你的1、2点,无论用几个表,每次调用云引擎函数都尽量只用到1~3次API调用是不是我的优化目标?(情况1 查询用户数据,则只需要fetch1次;情况2 客户端有数…
我有个细节设计部分想要请教一下。 目前我每个用户的主要数据存储在一个叫DEUser的表中,因此每次客户端调用云函数,几乎都是以这样的开头写的: current_user = engine.current.user #第1次查询请求 if current_user is not None: DEUser = current_user.get("DEUser") DEUser.fetch() #第2次查询请求 #下面是业务操作代码 问题1: current_user = engine.current.user #查询请求1次 这个代码的查询请求是否没有计入API调用请求中?因为在API统计中看到_…
我看了一下LeanCache相关的文档,请问: 1 开发版的LeanCache有什么限制?因为有最低限制的消费,如果要使用Redis,就算在开发期间,也需要至少每天30元吗?还是说可以用开发版的云引擎配合按需求单独计费的比如1元128MB/天的LeanCache? ===更新=== 这个问题找到了一个销售咨询,没错,开发版+LeanCache没有30元最低消费限制。 2 我准备把所有表的数据都以objectId为key都set到Redis里或者是自己声明的dictionary里,不同项目不同表之间、相同项目不同表之间的objectId是否会有重复的? 3 每次Deploy python云引擎的…
我计划用LeanCache做缓存。将存储服务的数据find或fetch到后,用cPickle序列化然后以objectId作为key存在Redis中。不同表的数据保存在同一个Redis实例中。 1 目前用cPickle序列化查询到的数据类会报错;若不用cPickle,直接保存查询到的数据类是存储成功的,但再取出来类型是有问题的。具体问题描述、代码、出错提示请见链接: artsungames: 我学习了Redis并给LeanCache充了钱开了一个Redis实例进行了测试,存储、读取普通数据都正常。但当使用cPickle进行dumps时遇到了报错,可否请人帮我看一下,谢谢! 错误: STDERR …
我明白了,就好比在python cloud.py文件的全局处声明的dictionary就可以用来做缓存, 谢谢!
我学习了Redis并给LeanCache充了钱开了一个Redis实例进行了测试,存储、读取普通数据都正常。但当使用cPickle进行dumps时遇到了报错,可否请人帮我看一下,谢谢! 错误: STDERR web1 22:36:37 Traceback (most recent call last): STDERR web1 22:36:37 File "/opt/pyenv/versions/2.7.13/lib/python2.7/site-packages/leancloud/engine/leanengine.py", line 128, in dispatch_request STD…
请帮忙看一下这个问题,非常感谢!
对,大家应该大都是这样使用LeanCache的吧,但是现在找不到相关文档或者相关讨论的帖子。可否烦请您邀请一位同事帮着看一下呢?现在春节加班,这个解决不了就完全没法推进,人多的时候很快服务器就崩了。谢谢!!
还没有 还在四处求救;我刚刚更新玩问题说明,最重要的是第一点,如果不解决,leancache现在没法用。 请问你也是遇到同样问题了吗?
不用Leancache,开发版服务器只能支撑1个用户玩大半天(没用缓存)。。。
你可以看看我第1点提到的那个帖子说明,不知道有没有帮助。我是自学的编程经验不丰富,也许你能看出来是哪里的问题~
现在是dumps那行就运行不下去了。我测试过自己写的其他类没问题,就是leancloud的数据那个类dumps就会这样。其实不用cPickle是可以set进redis里的,但是取出来之后我不知道怎么再弄成leancloud数据类。
我不是很懂,分析不出来;但是看文档的时候看到了leancloud.Object类有dumps方法,是不是可以用这个做序列化后存储在Redis里;取出来之后再手动创建还原为leancloud.Objecct?
谢谢~ 我试一下。 我说的是第二个办法,就是不使用pickle也不用leancloud.Object类所带的dump进行序列化,查询到的类实例直接存在Redis里,然后再读取出来,这时虽然读出来了一个数据但是类型不太对。你可以看一下我帖子第1点的说明,给出来代码,非常简单。 存之前是 <leancloud.object_.DEUser object at 0x7ff00799fdd0> , type = DEUser ;存进去再读出来是 <leancloud.object_.DEUser object at 0x7ff00799fdd0> , type = str 两个…
非常感谢回复! 我也是昨天发现了 Object.dump 这个方法,正准备尝试一下。代码是不是就是这样 bar = foo.dump() #foo是查询好的leancloud数据Objecct类 1 请问怎么从反序列化后得到的dict再处理成为 leancloud.Object 呢? 2 我看Redis好像是支持dict(hash表)类型的,所以以上的 bar 不进行cPickle直接set进Redis也是可以的吧?是否推荐进行pickle呢? 3 我之前尝试的直接将leancloud.Object用set存入Redis,再取出来,那个存进去的实际上是失败的吗?是不是并没有包含各个字段的数据?
请问你指的是不支持 bar = foo.dump() 这个用法吗?那么应该如何使用 Object.dump 方法呢?可否给一下示例代码看一下,谢谢! 另外1我主要想问的是这个:我明白如何存储了(当你dump后再进行pickle/json/msgpack处理后,再set进Redis);但是不太明白如何恢复成leancloud.Object(我会从Redis中get出来,然后用pickle/json/msgpack恢复成dictionary;但是怎么将这个dicttionary处理成为和查询到的数据格式一样的leancloud.Object呢?) 谢谢!!
那存在Redis里怎么起到缓存作用啊?...必须得根据业务每个数据表都各自分别设计处理吗?如果这样还不如全局声明一个dict做缓存方便....... 有没有办法让Object支持cPickle也行。或者有没有leancache推荐的比较通用的设计方案思路或者示例? 你看我这样的思路对不对: 1 以前旧有的代码使用'Object.set','Object.get'方法,现在用了Redis后get出来的虽然是dictionary,但也是用set、get方法,语法上一样,所以如何使用数据的代码其实并不需要修改(这样就没有恢复成leancloud.Object类型的需求了),只要把查询替换为先从Red…
1 非常感谢!我正在测1,准备按1的方法去将项目完全重构一遍,这是我目前能想到的办法。请问你们没有官方推荐的设计思路吗? 我正准备再测试一下2,看看before_save这样的hook函数是不是可以正常运行。 2 按照我的理解before_save是新建一条数据项目时被触发、before_update是更新一条已存在数据时被触发;所以按照我的设计思路,应该在两个函数里都进行dumps、pickle后存在Redis里,请问对吗? 3 另外您建议是用before_save和before_update方案,还是用after_save和after_update方案呢?谢谢!
商用版关于API调用 问题讨论 我的小游戏今天测试大概才5、6个人,3个小时,就超过了开发版的API调用次数限制,我看网页上说的开发版API调用限制是30000/天。 请问商用版API调用是什么价格的收费?是否指的就是对象存储次数的意思(1元/万次)? 另外我是第一次开发网络游戏,请问我这个数据API存储的访问量设计是不是有问题啊,那么快就用了那么多。 我在考虑如何进行重构,有没有办法得知某一条云函数调用API的量啊? 谢谢~ 这个帖子下面讨论的很详细了,也有了一些思路,你可以参考一下。
所以是after_save和after_update里都进行dumps、pickle、set到Redis里的操作对吧?
今早又收到了这个报错,以前偶尔也有过:LeanCloudError: [1] LeanCloud was able to complete a TCP connection to the upstream server, but did not receive a timely HTTP response 这次发生可能是在deploy/publish的时候 请问是否应该重视?我应该做什么处理呢?谢谢! 截图如下: 20180627 HTTP无响应 1.png 1565x800 112 KB 20180627 HTTP无响应 2.png 1552x798 124 KB
好的,谢谢~ 那我忽略就好了。
请问LeanCache是否支持可视化Redis客户端? 有没有推荐的客户端(我搜到了Redis Desktop Manger但是好像是收费的)? 应该用哪些信息连接? 谢谢!
原来如此,谢谢! 那么如果想查看redis详细的数据情况,只能通过自己写接口然后导出之类的方式查看吗?
谢谢,我以前没做过服务器开发,不知道该如何部署和访问第三方工具。请问这种行为叫什么(在leancloud上部署和使用第三方工具)?是否有文档呢?我去研究学习一下。
好的,我研究一下,非常感谢!
这个链接打不开呢
非常感谢!
由于近期域名问题及要求所有应用绑定自定义域名问题,我需要测试应用仅使用国际节点服务是否可行。请问如何有效测试不同国家对不同节点服务器的延迟? 1 我可以请不同国家的朋友帮着ping一下服务器ip地址。这样是否就足够了? 2 按我的理解,一个云函数在相同数据环境下但节点不同,其运行时间(刨除了客户端调用和返回的延迟时间)应该不会有大的偏差。这样我只要自己测当前使用的华北节点的某函数总共耗时,跟1中得到的结果就能大概计算出正确的国外各处访问不同节点的总时间。请问这个思路是否有问题?(之所以不从国外直接测云函数,是因为朋友都不懂编程,只执行ping动作会更容易指导操作) 3 请问各节点是否可以提供几…
太感谢了,很有帮助! 如果想知道http访问的大概时间,我就本地调个云函数测一下,然后不同节点的ping时间参考着算一下应该就差不多吧
当更新存储某数据时偶尔会出现ReadTimeout问题,导致没有存成功,但代码中会先后存储A、B两条数据,如果A成功了B没成功,会导致很严重的数据不同步问题。请问这个情况该如何避免?谢谢! 问题报错如下: STDERR web-s 08:31:38 File "/usr/share/pyenv/versions/2.7.13/lib/python2.7/site-packages/leancloud/object_.py", line 240, in save STDERR web-s 08:31:38 response = client.put(url, data) STDERR web-s…
谢谢。。。那么。。。好像就非常麻烦了,上万行的服务器端代码,几十上百个云函数,大多都有多处不同时的save/update操作,如果每个地方都需要做异常判断,真是...复杂的很了... 请问有没有包装好的(或者该如何包装)判断一个save/update是否异常,如果异常则重试呢?
谢谢回复,请问MySQL为什么就可以规避这样的问题了?
原来如此,谢谢!
请问新版查看数据后台时, 1 如何隐藏/显示某些列? 2 如何调整列的顺序(旧版拖拽列名称可以调整顺序)? 谢谢!
对战Play服务是否足够支持多人密集操作的连线对战游戏类型? 拿王者荣耀举例,5v5的多人连线对战,会密集进行移动、释放技能: 方案1: 每10~20毫秒都会进行一次包括几十~几百个单位的位置信息、碰撞信息等的同步 方案2: 每10~20毫秒进行一次操作输入的信息同步 谢谢!
啊!也就是说Play是足够支持做复杂对战游戏的啊,太棒了,感谢!
请问有人知道吗?谢谢!
原来如此,这两个功能非常常用和重要,如果表稍复杂一点,没有他们就几乎没法用新版,希望能提高点儿优先级,谢谢!
同样
收到 谢谢!
请问Python开发的云引擎的接口,在Flutter客户端是否可以调用?是否有相关文档?谢谢!
收到,非常感谢!
测试以下代码时报错 1 'utils.dart' 不存在;2 initNorthChina 未定义。请问该怎么处理?谢谢! import 'package:flutter_test/flutter_test.dart'; import 'package:leancloud_storage/leancloud.dart'; import 'utils.dart'; void main() { group('cloud', () { setUp(() => initNorthChina()); test('call', () async { Map response = await LCCl…
原来是整个一个项目里test的一部分,我之前理解错了。感谢!
1 请问Flutter SDK在上传文件成功后,如果客户端通过URL读取和展示图片,是否不占用API调用?(我测试的是这样,希望能再确认一下) 2 在1的情形下,是否会占用Leancloud流量统计? 谢谢!
请问在控制台的_File表手动选中某条目然后删除该数据,是否会将该“文件本体”(例如一张图)也一并删除、并释放出文件使用量的占用统计?我试了一下这样删除后使用原url再次访问原图会报错,但好像因为文件使用量统计不是即时更新,所以对文件使用量的部分不是很确定。想请官方确认一下,谢谢!
谢谢!我用的北美版,看url应该是在AWS上吧,同样也会计算流量哈?
明白了,非常感谢!
Python3 云引擎ini时有两个选项django、flask,对这些web相关的开发不太了解。我只需要有云引擎提供接口,客户端app调用后做一些redis及存储数据的访问计算然后返回,是不是不需要django也不需要flask?如果都不需要应该如何创建新的项目呢?谢谢! P.S. 以前做过一个旧项目,看requirements.txt里需要Flask,所以选了Flask,虽然不知道哪里用到了Flask,感觉比较放心
image.png 983x142 30.1 KB deploy的时候出现了这个错误提示,但部署是成功的,hello world的云函数也调用正常。请问该如何处理?谢谢!
有一些工作需要服务器不间断运行(运行时检测redis某队列数据状况并处理,运行一次可能会耗一段时间,运行完毕后过1秒再次运行重新检测),请问python云引擎如何实现这种类似“守护进程”的功能?谢谢!
收到,谢谢! @weakish
请问您指的是多线程吗?我没学过多线程相关的知识,麻烦请看一下是不是下面这样就可以?谢谢 import time import _thread engine = Engine() _thread.start_new_thread( infiniteWork, ("Thread-1", 2, ) ) # 守护线程,持续处理Redis相关数据维护工作 def infiniteWork( threadName, delay): while True: # do some redis works time.sleep(delay)
Python本地SDK调用云函数发生异常,'leancloud.cloudfunc' has no attribute 'rpc' 请问大概是什么原因呢?谢谢! 111.png 853x263 20.8 KB
原来如此,谢谢!
不好意思,可否麻烦再稍微解释下怎么样是多进程?再创建一个新的云引擎实例专门处理这些任务,但和主程序用同一个存储服务和同一个redis吗? 另外加入需求不是每几秒调用一次,而是改成长时间比如每小时、每半天,那么是不是用Leancloud提供的定时服务调用比较好?
啊~ 明白了,谢谢!
Python SDK,往list或dict字段添加新数据项目。以前用python2.7的SDK我经常这样写是可以成功的: listData = data.get('listKey') listData.append(newData) data.save() 现在新项目用python 3 SDK,发现不可以了,必须在 save() 前再set一下才可以,否则即使像下面例子中print语句所示位置处数据是正确的,但保存后 listData 字段也未正确更新: listData = data.get('listKey') listData.append(newData) print(data.get…
我国际版有个应用(web网站),自己有一个域名希望A记录指向这个应用,但看域名后台设置A记录好像只能填IP地址,请问该如何设置呢?谢谢!
国际版邮箱验证成功、出错默认网页建议改成英文的。虽然可以自定义页面放在自己网站,但对于没有网站的app会友好的多。
谢谢,我用的国际版,目前就用CNAME设置了www跳转,输入全部地址是可以访问的,只是去掉www就不行了。
谢谢,我用阿里云买的域名,搜了一下没找到Flattening的讨论,后台也没找到能设置Flattening的地方。 如果用A记录+IP的方式,是在出入口IP里随便挑一个放在A记录就可以吗?是出口还是入口IP?是否还需要在云引擎增加裸域名绑定?
好的,如果不换域名商,看来是没什么好办法了,谢谢!
不好意思又打扰了,我暂时先用A记录指向一个入口IP的方法,访问没有问题了,但等了俩小时,云引擎后台处的绑定域名处还是“等待配置CNAME”的状态,请问该怎么办?
请问有人能帮忙看一下这个问题吗?谢谢!
weakish: ata.append(newDat 谢谢! 回想我以前很多情况下python 2 SDK 不再set可以成功保存,可能因为我是用的Redis,被修改的那个数据是从Redis里抓出来生成的,而不是从数据表里查询的。原来是不安全的用法。
谢谢,我私信给你了
好的,明白了,谢谢!
国际版Python SDK用lean deploy部署时报错,同一个项目之前没问题,今天重新部署会报错,请问是什么情况?谢谢!有特别多条以下重复的报错消息 [ERROR] /usr/share/pyenv/versions/3.7.9/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C header, got 152 from PyObject [ERR…
私信给你了,谢谢!
requirements.txt gevent>=1.0.2,<2.0.0 gevent-websocket>=0.9.5,<1.0.0 leancloud>=2.5.1,<3.0.0 Flask>=1.0.0 Flask-Sockets>=0.1,<1.0 typing .python-version 3.7.3
这是两个项目哈,我跟 @kernelGo 不认识。我的项目的app ID私信给你了。
ok 加油~
收到,谢谢! 全fix后还请在这里通知一下,thx
在研究Lean Play游戏解决方案,有这样几个问题: 1 托管MasterClient于服务端这个方式,是否支持C#或Python语言?我目前还没有很理解这个应该怎么开发和部署,文档只找到node.js版。按我的想象是不是有这两个可能:1 类似云引擎要单独写一个服务端的项目然后部署;2 托管在服务器的部分跟Unity客户端是同一个项目,但会加入master的逻辑,就是说客户端会有一部分master的逻辑用不到,服务器端有部分客户端的逻辑用不到。如果有C# MasterClient的文档或者unity示例项目就好了,目前的那个球球大作战的项目并没有Client Engine这部分。 2 Pla…
好的,谢谢!
准备使用Leancloud Play的Unity SDK配合云引擎SDK做一个多人(例如4人)回合制卡牌游戏(为方便说明,这里假设是4人版本炉石),关于匹配机制文档和案例中写的不多,所以自己根据现有知识设计了如下方案,希望听听大家意见看是否可行。 首先大架构方面,用云引擎和存储服务负责存储账号、各玩家卡组数据、天梯匹配分数和段位数、开卡包等功能。游戏具体进行是使用leancloud的play服务,第一个加入房间的玩家作为Master client,负责一切重要的游戏逻辑,各个客户端负责用户操作、动画展示。这里目前暂不使用托管Master到Lean Engine,因为不会node.js。日后可以…
谢谢回复,这方面会根据各段位玩家数量做动态调整,比如最后可能就根据段位分成2个匹配条件,低段位和高段位。 这里的讨论其实重点是放在技术方面,我是第一次做类似的匹配和实时交战。感觉我设计的方案里断线重连部分好像不太稳妥,比如会有其他新匹配的玩家进入有掉线的房间,然后被踢出来,我总感觉这个不太好,有没有办法能让房价master把那个空位只允许之前离线的玩家匹配进来;或者让master有办法设置自己的房间不被JoinRandomRoom寻找到,这样其他玩家寻找新房间的时候不会考虑这些已经开始游戏但人数不满的房间。 不知道使用Lean play时正确、普遍的方案是什么样子的?示例项目里都是直接手动填写…
谢谢!原来如此,我有些头绪了。梳理了以下几个细节小问题: 问题1 JoinRandomRoom失败后的处理代码示例,我没看太明白,这个 play 是什么的实例(试过client、LeanCloud.Play都不对)?而这个On的调用又该写在何处呢? play.On(Event.ROOM_JOIN_FAILED, (error) => { if (error["code"] == 4301) { var props = new Dictionary<string, object>(); props.Add("level", 2); var options = new RoomO…
按照教程尝试Play时,Logger接口好像有问题。 image.png 804x305 28.2 KB
原来如此,我是下的release版,照着文档加比对着球球大作战那个demo项目学的。那俩估计用的旧版SDK,用的都是Play命名空间。 另外实在不好意思打扰你假期,但可否还请帮着看一下这个回复里的问题1,我没有假期,工作卡在这里后面都不好进行了 谢谢! artsungames: 谢谢!原来如此,我有些头绪了。梳理了以下几个细节小问题: 问题1 JoinRandomRoom失败后的处理代码示例,我没看太明白,这个play是什么的实例(试过client、LeanCloud.Play都不对)?而这个On的调用又该写在何处呢? play.On(Event.ROOM_JOIN_FAILED, (erro…
写了个测试小程序,编译,pc端开多个进行模拟加入房间;关掉游戏模拟“master断线”,然后都可以很正常的更换master。更换的逻辑和代码都是参考球球大作战那个demo写的。 但如果用unity editor直接点play运行加入房间,再点击play按钮终止运行时,并不会立即更换master,而是在下一次点击play按钮时才会更换master,请问这个应该怎么处理? 我在master的组件加了关闭client代码,也确定在“点击editor的play按钮终止运行时”print被调用了: void OnApplicationQuit() { print("OnApplicationQuit")…
谢谢!注册事件的机制我明白,但具体到这个“客户端实例”该怎么调用到其.on,语法层面不是很明白,比如下图我在初始化完成后想注册,直接写play显然不对、client也不行: image.png 995x809 101 KB 我就是想实现那个帖子讨论过的“1 随机加入房间,2如果1失败就创建一个房间”这个逻辑,你建议第2步使用“事件注册”还是使用“调用异常 try JoinRandomRoom() catch CreateRoom()”?
如果在Master中连续发送两次event A、B,其他客户端是否可以认为接收到的events一定是顺序正确的?如果A传输丢失了SDK会自动重新传输吗?如果会自动重发,而此时如果B已经被其他客户端接收并处理了,那么events顺序就是不正确的了。需要自己处理这个问题是吗?
谢谢!client也试过了,不行: image.png 970x757 104 KB
我尝试过看测试,但水平有限看不懂...如果我要弄懂测试的意思可能会引申出非常多其他相关性不大的问题.... 我是按照Leancloud文档里的c#代码完全复制的,麻烦请看一下是不是文档里的代码有问题?(https://leancloud.cn/docs/multiplayer.html#hash1174327551) 其他的文档(下图)里的事件回调注册都很清楚可以直接模仿写,但上面文档里的用法就很不一样, play 不知道是什么,如果用client也没有 .On 可以调用。
麻烦你了,可能这是旧版的SDK用法。因为开发指南里没有关于OnJoinRoomFailed的例子, @weakish 在这个问题里给了我一个例子,是在总览里的。 https://forum.leancloud.cn/t/leancloud-play/23430/4。
发现了一个关于SendEvent和Task之间可能存在的冲突bug。 一句话总结: await client.SendEvent() 调用后面必须紧跟一个print语句,否则则会导致 yield return new WaitUntil(() => task.IsCompleted); 的task一直是未完成的状态,卡在这里无法继续执行。 补充信息: 如果打开消息日志,bug就会消失(task会完成),如果注释掉下面两行消息日志的代码,bug就会出现。 LeanCloud.Common.Logger.LogDelegate = (level, info) => { Debug.Lo…
实际项目中每次由客户端发送事件,都需要master判断是否合法并回传该次事件是否成功执行,以便客户端根据执行结果进行处理。请问这个在事件调用是否有办法实现? 应用场景: 炉石传说,客户端A出牌1、出牌2,此时客户端A播放牌1悬空和牌2悬空动画,发送事件并等待结果。当结果失败时取消悬空动画,当结果成功时播放出牌动画。 目前我是用Master向该客户端发送事件通知是否成功,客户端根据参数判断是哪个事件的调用然后执行相应的操作并取消调用事件时注册的成功/失败callback,但随着项目增大这样的机制感觉会变得非常复杂和不可靠。请问Leancloud sdk是否自带了能解决相关需求的功能?谢谢!
今天几乎没干别的就光围绕这个问题去网上做各种收集也去stackoverflow提问,最后发现跟await异步调用无关,做了大量测试,最后确定问题如下。 首先是最小复现模型: IEnumerator CountingCoroutine() { while (true) { var client = LeanCloudUtils.GetClient(); client.SendEvent(123); var props = new PlayObject { { "32", 45 } // 字符串参数行 //{ 32, 45 } // 数字参数行 }; //print("magic"); // ma…
Play遇到了这个错误,查了下是说Room 的属性已经达到最大长度限制。 按我的理解,这些“游戏数据”都要保存在Room.CustomProperties里,这样断线自动换master时数据在新的master中也会保持一致。我一个简单的卡牌游戏,一个棋盘几十个格子、每个格子有座标、单位的基本属性,这些就超出长度限制了。 请问应该怎么办?谢谢!
我当然可以更改设计为:在各个客户端内存都维护相同的这一大堆数据,通过自定义事件去同步。本质感觉和Room.CustomProperties其实没什么区别,所以能不能手动取消Room的这个长度限制。 可行性问题1 自定义数据传输有类似的长度限制吗? 2 Player.CustomPropterties有类似的长度限制吗?
谢谢回复。Room Custom Properties我只保留了必要的数据,结构非常简单: "COUNTDOWN":3 #当前状态倒计时 "PLAYERS": ["UserID1", "UserID2"] "WHOSE_TURN": 2 #当前是谁的回合,用ActorId "CARD_ID": 20 #用户给新卡生成ID用(类似static数据) "UNIT_ID": 20 #用户给Unit生成ID用(类似static数据) "UNITS":[Unit{ #所有单位数据 "id":3,#该局有效的单位唯一id,不分敌我 "c":Vect2({"x":1,"y":3}),#coord 座标,Ve…
明白了,谢谢。
Flutter项目在PC端安卓虚拟机测试时报错。 SDK 版本 0.4.3、0.5.0都存在 currentUser = await LCUser.getCurrent(); 报错 出现异常。 NoSuchMethodError (NoSuchMethodError: The getter 'length' was called on null. Receiver: null Tried calling: length) 位置: lc_user.dart 417行 image.png 815x467 49.4 KB 不知道以下信息是否有帮助。一直是登录状态,事发前在测试登出,运行以下代码时,第…
1 请问如果catch到就当作是未登录状态处理是否正确、安全? 2 我对try catch机制不是很熟,这样写没catch到: Future<bool> isLoggedIn() async { try { currentUser = await LCUser.getCurrent(); } catch (e) { print('${e.toString()}'); print('${e.message}'); currentUser = null; } print('isLoggedIn() gets called, currentUser = $currentUser'); r…
哦~ 所以我catch不到是正常的哈。但是只要没登录,每次运行到这,都会自动断点,很麻烦。
好的,谢谢!
请问Flutter SDK有没有nullsafety版本的开发计划?
就是在Flutter项目里使用。因为Flutter官方现在建议所有package都开发nullsafety版本。一个项目如果要做到sound null safety需要所有引用的package都使用nullsafety才可以达成。
类似问题https://forum.leancloud.cn/t/python-sdk/23401 部署失败,报错: [ERROR] /usr/share/pyenv/versions/3.7.10/lib/python3.7/importlib/_bootstrap.py:219: RuntimeWarning: greenlet.greenlet size changed, may indicate binary incompatibility. Expected 144 from C header, got 152 from PyObject [ERROR] return f(*args…
原来如此, 现在可以了,谢谢!
目前是在Unity的Editor里、国际版leancloud开发环境,SDK版本号不知道在哪里看。 注册、登录都可以成功。但重新在Editor里运行app时,以下代码得到的是null,每次都需要重新登录 var currentUser = await LCUser.GetCurrent();
谢谢!我记得旧版的SDK是有的呢。 1 请问Login或Signup如何得到session token呢?例如以下的代码中: LCUser.Login(userName, password).ContinueWith(t => {} 2 ContinueWith由于不是主线程,很多Unity的API是无法使用的。旧版里对此并无处理需要自己写个支持的机制。请问新版有针对这个问题提供什么API吗?
好的谢谢! 1 我记得旧版文档里用的都是ContinueWith,这样当出错时可以处理。如果用await的方式,参考那些Test代码,判断Login/Signup/BecomeWithSessionToken是否成功的方式是否如下? LCUser current = await LCUser.GetCurrent(); if (current.ObjectId == null) { // 出错,需处理 } else { // 成功 } 2 当Login/Signup/BecomeWithSessionToken按照问题1的方式判断成功后,是否还需要做 bool isAuthenticated …
原来是这样,非常感谢!很有帮助!
今天国际开发版deploy大概有一多半的情况都是部署成功但已忽略云函数和 Hook,请问是什么情况? [REMOTE] 已忽略云函数和 Hook,原因: Error: ETIMEDOUT [REMOTE] 云函数和 Hook 信息已更新 在这样的情况下,Hook和云函数生效吗?谢谢!我自己测after_user_save好像没生效(在后台没看到手写的print内容)
请问pyhon3云引擎在hook的after_user_save中调用user.save()会再次触发该hook吗?
我发现有时候在网页的log页面看不到一些print语句,有时是exception发生的时候,有时是hook函数里,偶尔会有print前后顺序颠倒,给debug造成很多困难,请问这是什么情况?如何能得到可靠的print信息?谢谢!
请问不存在的id查询为什么不raise exception而是有结果?这样不是null的结果该如何判断是否查询成功?谢谢 示例: Test = leancloud.Object.extend('Test') result = Test.query.get('123') print('result = ', result, ', id = ', result.id, ', time = ', result.created_at) 输出: [2021-04-05T04:17:09.913962000Z][instance:web1] result = <leancloud.object_.C…
这个比较难复现,如果再次发生我再来汇报详细的情况
谢谢,测试过了结果正确,请问is_existed()是否相当于重新查询了一次,还是在调用get的时候就得到了结果,is_existed()就是在内存里取到的值?另外是否会计入一次API调用?
谢谢,现在好像没问题了,就4号那天发现有些print没执行,仔细看了log才发现的这个情况。建议如果没生效最好用红色Error在部署log里提醒一下,因为有些hook是很核心的方法,需要确保注册后一定调用到才行。
谢谢!但是我在项目中没有找到 leanengine.yaml 文件。
weakish: functionsMode 为 strict 谢谢!这样应该OK吧
谢谢!请问这样的方式是否还需要验证 IsAuthenticated ? current_user = leancloud.User.get_current() if current_user is not None: # 这里是否还需要验证IsAuthenticated ? pass else: # 显示注册或登录页面 pass
出于更灵活的原因(比如自由更新、或更换其他版本的Newtonsoft.Json),我使用了以下版本的Json.net https://github.com/jilleJr/Newtonsoft.Json-for-Unity 但Leancloud的Unity SDK里自己也带了一个版本的Json.net,因为名字相同,所以无法共存,但删除Leancloud所带的Plugins/JsonDotNet文件夹后,发现无法编译,因为: Storage references strong named Newtonsoft.Json in a different folder, versions has t…
谢谢!用了0.7.3版可以了
build flutter项目时,提示: Because every version of integration_test from sdk depends on crypto 3.0.0 and leancloud_storage >=0.0.4 depends on crypto ^2.1.3, integration_test from sdk is incompatible with leancloud_storage >=0.0.4. So, because xxx depends on both leancloud_storage ^0.6.3 and integra…
.Net和Flutter都是你负责呀?好厉害 请问该怎么clone? 在https://github.com/leancloud/Storage-SDK-Flutter这里点download.zip,解压后VSCode里再怎么操作呢?
谢谢,提示相对位置不对,尝试过直接放在项目文件夹里(和pubspec.yaml在一起)或者lib文件夹里或和项目文件夹并列都不行,试过 ../Storage-SDK-Flutter 、 ./Storage-SDK-Flutter 也都不行。
对,我参考的就是这里。是不是我下载的内容不对呀? 这是project\Storage-SDK-Flutter里的内容 image.png 799x407 41.5 KB
谢谢,抱歉原来之前是我看走眼了。当path对的时候,还是会提示依赖有冲突。 image.png 1552x196 31.3 KB
本地云引擎部署时(win10)运行Lean deploy提示 [INFO] Current CLI tool version: 0.24.2 [INFO] Retrieving app info ... New version found: v0.24.4. Update message: You can upgrade by: Visit https://github.com/leancloud/lean-cli/releasespanic: unexpected end of JSON input, Error ID: xxxxxxxxxxxxx 其中ID每次都不一样。 请问必须要升级才能…
后来可以正常下载了,谢谢
看到通知说8月1日起国际版禁止用国内IP访问,所以国内开发国际版测试时都必须挂代理才行吗? 有没有白名单功能?
在unity上调试海外项目,因为这个问题,非常非常非常影响工作。你不能期待每个开发者的梯子随时都跟Unity配合的那么好、也同时跟其他三方SaaS服务配合的那么好。 强烈建议加一个ip白名单(可以限制个数),或者任何其他方式解决这个问题。真的没有这样搞的... 搞的开发者那么麻烦,长此以往谁还会用这样的服务啊?
我的本来就是发行海外的游戏,不能转移国内
请问国际版绑定的域名有备案要求吗?
好的,谢谢!我研究一下
请问如果在后台绑定了域名,会影响不绑定域名的客户端访问吗?(客户端需要做相应初始化更新,大多数海外用户没更新就还是使用的旧方法进行云函数调用。我绑定域名主要是为了我Unity开发调试不用再用不稳定的翻墙。)
另外,我已经绑定了域名,但是Unity里测试还是被墙的状态。 我初始化是这样的: LCApplication.Initialize(appid, appkey, "xxxx.mydomain.cn") 文档里写的接口是 AVClient.Initialize ,不清楚是文档太旧还是我的SDK太旧。
原来如此,加了 https:// 就可以了。请原谅我之前的暴躁和无知,之前以为是GFW没墙Leancloud反而主动设墙,我对GFW深恶痛绝,没把持住
是的,同样被困扰,非常无语。在考虑是不是换别家试试
您好,我看文档国际版有个5USD/日的最低消费,我在财务界面看到每天扣钱3.2USD,是这个最低消费的规定废弃了吗?谢谢!
请问怎么样才是商用版?我设置了两个云引擎实例,我记得以前有个什么规定,是用了正常实例,还是用了reddis后,就自动调整为商用版?
原来如此,谢谢!那么我现在是开发版+付费实例,所以请问下面几个限制我还会遇到? 1 每日强制休眠6小时(这条肯定是没有了) 2 一段时间(好像是10分钟还是30分钟)无云函数调用时自动休眠,直到下一次云函数调用。(这条会导致过一段时间比如早上第一个用户经常访问失败或者很卡) 3 API调用限制每日3000条,超过的请求直接丢弃。
原来如此,明白了,谢谢!等API如果可能超过3万/天时,升级到商用版就可以了吧。您看我这样理解正确吗? 现在开发版有每天30000次免费API调用,同时也是每日API调用上限限制。 升级为商用版,就没有30000次/日上限了,但是也没有免费额度了,按照$0.04/1K requests收钱,这个消费也会计入每日5USD最低消费要求中。
非常感谢!
国际版、Python云引擎 我想在游戏中得到在线用户的数量,目前的想法是客户端每秒调用一个python云函数,该云函数统计当前在线的用户数告知给该用户。此云函数只通过python操作内存里的dictionary等数据,不会进行数据库的存取。 1 请问这样的情况下每次调用该云函数,是否计为1次API请求? 2 如果在该云函数中,进行了一次 engine.current.user 调用,是否每次调用都增加1次API请求? 3 如果问题1是计入,显然这个方案不行因为会使用极大量API请求数。请问是否有什么建议的方案? 谢谢!
谢谢您的详细回答。 针对不共享内存数据这部分,如果希望在不同引擎实例中对同一内存数据操作,是不是使用Redis就可以了?
我希望python从存储的数据中读取到一条数据后, obj.dump() 可以得到一个dictionary进行处理,比如将其所有字段都存在redis中(hash) MyObjectType = leancloud.Object.extend('MyObjectType') dic=object1.dump() r.hmset("objectID1234", dic) dicLoaded = r.hgetall(objectID1234) 1 请问从redis中取出的dicLoaded和 dump 出来的dic是否一样? 2 请问如何将该dic再还原为MyObjectType类型? 以前问过,说…
[ERROR] 部署失败:build failed: us-w1-engine-cell-12.us-w1.tds unavailable: no such config 大概一小时前还是正常的,多次尝试部署都是失败。已经在这里(https://releases.leanapp.cn/#/leancloud/lean-cli/releases)更新了最新的1.2.4,尝试还是失败。
现在重试了一下,部署成功了,是您做了什么处理吗?谢谢!
谢谢! 我把前面俩信息删了哈,安全一点
App ID 3cCToiXYVm2RXr94huwu7g31-MdYXbMMI 部署失败,提示: [2023-09-22T13:14:35.907000000Z][system] 实例日志:[ERROR] daemon: fatal: refusing to execute unsafe program: start-engine-app (/usr/bin/start-engine-app is group writable) [2023-09-22T13:14:35.908000000Z][system] 实例启动失败: 无法访问应用的 Web 端口(Error: connect ECO…
北美App无法调用云函数。 另外console.leancloud.app/apps无法打开,提示 Failed to fetch [N/A GET https://us-w1-console-api.leancloud.app/client-center/2/clients/self ]
国际版leancloud数据存储服务,据一些台湾用户反应,大多数(体感75%)情况会出错,看后台日志如下: [2024-04-15T02:46:57.710446800Z][instance:web1] File "/usr/share/pyenv/versions/3.10.13/lib/python3.10/site-packages/leancloud/object_.py", line 243, in save [2024-04-15T02:46:57.710451200Z][instance:web1] response = client.post( [2024-04-15T02:4…
国际版leancloud数据存储服务,据一些台湾用户反应,大多数(体感75%)情况会出错,看后台日志如下: [2024-04-20T16:20:20.224966100Z][instance:web1] Traceback (most recent call last): [2024-04-20T16:20:20.225003500Z][instance:web1] File "/usr/share/pyenv/versions/3.10.14/lib/python3.10/site-packages/leancloud/engine/leanengine.py", line 232, in …