想试一下wcf的双工然后步骤大概是这样的,JQuery调用webservice()的
GetMSg()方法(webservice有wcf要用的回调函数GetMsgResult()) ,wcf服务端那边也进去了 ,但是为什么以调用完服务端 的代码 整个网页就自动关闭了????? 大概代码有下面两部分
1 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 2 [System.ComponentModel.ToolboxItem(false)] 3 // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 4 [System.Web.Script.Services.ScriptService] 5 public class ClientUtils : System.Web.Services.WebService 6 { 7 [WebMethod(EnableSession = true)] 8 public void GetMSg() 9 { 10 //do something 11 } 12 } 13 14 public class CalculateCallback : IOMSServiceCallback 15 { 16 public void GetMsgResult() 17 { 18 string a = "2"; 19 } 20 }
服务端:
1 public void GetMsgDialog() 2 { 3 ICallback callback = OperationContext.Current.GetCallbackChannel<ICallback>(); 4 callback.GetMsgResult(); 5 }
双工只能应用与 tcp 或 dualhttp 绑定,而后者实际上是客户端也开一个http端口监听服务器发送来的消息。
网页或js,要想实现服务器推送模式,可以采用Comet方式或使用websocket.
客户端也开一个http端口监听服务器发送来的消息, 那网页不能是这个客户端吗?
@koi: 网页不能,一是有安全限制,另外,你不能保证所有客户机都具有公网IP,绝大多数客户机是隐藏在路由器后面的,只具有内网IP。