北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
12
返回列表 发新帖
楼主: uniboee

不会卡住 mushclient 客户端的 fullme 插件

[复制链接]
发表于 2014-2-27 15:14:36 | 显示全部楼层
2、当fullme经常超时的情况, 建议将 MUSHclient所在目录下的\socket\http. lua文件中的 TIMEOUT = 60 改为 TIMEOUT = 3

原来发布的帖子里有这个建议,也就是3秒*10次尝试。
要不极端点,超时1秒只试1次,超时失败的话框还是跳出来,框里显示个提示的失败图片,可以用刷新按钮再手动刷,还是1秒超时*1次。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-2-27 15:18:17 | 显示全部楼层
本帖最后由 uniboee 于 2014-2-27 03:23 PM 编辑

回复 10# pizzagoo

非阻塞式的socket是立刻返回的,读写有没有成功,需要一个loop来不断地对这个socket进行测试。

你的意思是用DoAfterSpecial()来模拟这个不断对socket进行测试的 loop ?

但lua要求协程的调度,需要在创建者和被创建者之间进行,DoAfterSpecial()可是mushclient客户端提供的世界命令,和lua无关啊。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-2-27 15:21:38 | 显示全部楼层
回复 11# labaz

我看到那个timeout了,参照如下代码,意思应该是网络超时过长时,就挂起,但是不明白这个status是如何获得为timeout的:
    function receive (connection)
      connection:timeout(0)   -- do not block
      local s, status = connection:receive(2^10)
      if status == "timeout" then
        coroutine.yield(connection)
      end
      return s, status
    end
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-2-27 15:26:30 | 显示全部楼层
回复 12# uniboee

看了一下论坛,原来lz也是mush大牛啊,chat* admire
对,我的想法就是这样
function check_fullme()
      判断标记,若未完成
       resume socket
      DoAfterSpecial(1000,"check_fullme",12)
end
lz看可行不?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2014-2-27 15:31:20 | 显示全部楼层
回复 14# pizzagoo

我先试试labaz说的方法可不可行。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-2-27 15:33:41 | 显示全部楼层
本帖最后由 labaz 于 2014-2-27 03:35 PM 编辑

回复 11# labaz

还有就是可以建议jason增加直接给出图片链接路径,以减少客户端和web服务器的交互次数,在网络不稳定时估计能间接提高fullme图片显示成功率
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2014-2-27 16:10:48 | 显示全部楼层
建议Jason取消fullme
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 06:55 AM , Processed in 0.010920 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表