使用ASTA中碰到AstaClientDataSet调用ServerMethoe引起CodeParamList消息阻塞的问题,请用过ASTA的大富翁帮忙 ( 积

  • 主题发起人 主题发起人 mangoking
  • 开始时间 开始时间
M

mangoking

Unregistered / Unconfirmed
GUEST, unregistred user!
使用ASTA中碰到AstaClientDataSet调用ServerMethoe引起CodeParamList消息阻塞的问题,请用过ASTA的大富翁帮忙 ( 积分: 300 )<br />ASTA版本是3.081,&nbsp;服务端用BusinessObjectManager,&nbsp;建了几个Action,&nbsp;带有Params,供客户端作为ServerMethod调用。<br>客户端用AstaClientDataSet调用服务端的ServerMethod,同时用ClientSocket的OnCodedParamList事件响应服务端发来的消息。分开测试时候都没有问题,程序写了大半才发现如果用AstaClientDataSet调用了带Params的ServerMethod,&nbsp;就会引起后继的CodeParamList消息阻塞,&nbsp;直到再次调用ServerMethod,被阻塞的消息才被触发。<br>现在是非常头疼,请用过ASTA的朋友帮忙,看看问题是出在什么地方,问题解决了再送600分,谢谢!
 
补充一下,该问题出现时,仅限于调用了带Params的ServerMethod的客户端接收CodedParamList消息时被阻塞,&nbsp;不影响发送,也不影响其他的客户端。“再次调用ServerMethod”指的是接收消息被阻塞的客户端再次调用不管是带Params的还是不带Params的ServerMethod,被阻塞的消息就会先于ServerMethod的返回事件触发。
 
原来测试时好象没注意,刚才发现调用不带Params的ServerMethod也会被阻塞。。。
 
没人用asta了吗?
 
建议跟踪一下服务端的程序。看看阻塞在哪个地方,一般都是在某个循环里没跑出来。
 
ASTA3以上版本BUG多,建议换2。6试试!
 
谢谢两位热心回复,我再试试。&nbsp;&nbsp;2.6版比3.0版在服务器的支持上少了很多有用的东西,如果不是真的不行实在不想用。。。<br><br>问题再放几天,解决没解决都要结帖了。有知道的朋友请不吝指教,谢谢!
 
呵呵,确实存在此问题。我用的是变能的方法:在BusinessObjectManager中建立一个过程来接收消息,再根据消息Id&nbsp;ServerSocket.SendcodedMessage或者进行相应处理。
 
to&nbsp;sunsam:<br>谢谢关注。可是看兄台说的内容,似乎是说客户端发送消息到服务端不正常,而接收服务端发来的消息正常。我遇到的问题却是客户端发送消息正常,而接收从服务端发来的消息不正常。哈,这asta真有那么莫名其妙啊。。。
 
是客户端接收服务端的消息不正常。<br>可能是我说的不够详细,具体是这样:<br>服务端:<br>&nbsp;&nbsp;&nbsp;在服务端的BusinessObjectManager中建立一个过程SendMsg来接收消息,在Action中根据消息的内容用ServerSocket.SendcodedMessage或sendCodeParamList向客户端返回信息。<br>客户端:<br>&nbsp;&nbsp;&nbsp;用astaclientdataset调用服务端的方法sendMsg来发送信息,接收信息还是用Astaclinetsocket的onCodedMessage或者onCodedParamList。当然也可以由服务端的SendMsg直接返回对应的信息。
 
我曾跟踪了一下代码,客户端的发送、服务端的接收和发送确实都没有问题,只是现在没时间,所以暂时用了一个变通的方法。
 
to&nbsp;sunsam:<br>哦,我明白了。就是利用了“被阻塞的消息会先于Action的返回事件触发”这一点,在Action里面发送消息,然后Action发生返回事件,在这之前客户端的onCodedMessage或者onCodedParamList就可以收到消息,呵呵,真是巧妙的想法。<br>可是这个法子只适用于客户端发起的“客户端a-&gt;服务端-&gt;客户端a”这种类型的通信,如果想实现象“客户端a-&gt;服务端-&gt;客户端b”、“客户端a-&gt;客户端b”、“服务端发起-&gt;客户端”之类的通信方式,又要另想办法。<br>我现在也是赶进度太紧张,腾不出时间去弄它,现在用的是比较笨的替代办法:服务端的SendBroadcastEvent、客户端的SendChatEvent可能用的是和sendCodeParamList之类方法不同的机制,没有这个阻塞的问题,就先将就着用了,广播到各客户端再过滤,呵呵。效率肯定比较低了,不过目前我做的东西预计客户端不超过150个,应该问题不是很大,而且现在忙着赶进度,等缓过劲来再慢慢地抓包分析和跟踪代码了。。<br>关于解决asta的这个问题,如果您有什么进展,希望能指点一二,我的email:mangoking[AT]126。com。谢谢关注!
 
看到一个有关ASTA控件的了,我现在正在用,用几个问题请SUNSAM指点一下,还是事务的问题,如果客户端上传数据中网络中断出错,全部重新上传,我找一下,好像都没有解决,SUNSAM能留下个QQ吗。
 
QQ&nbsp;654993356
 
谢谢各位。
 
后退
顶部