问题标签 [duplex]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 为不同的用户创建单独的处理程序 - WCF 聊天
我正在关注这篇精彩的文章来剖析和理解使用 WCF 进行的聊天。逻辑是,当用户加入聊天时,会为该特定用户创建事件处理程序并将其存储在字典中。
因此,为服务中的多个用户存储了多个处理程序。
我的问题是这个——
仅在事件处理程序的帮助下发送消息时,服务如何识别目标用户?我不了解为用户存储的事件处理程序的唯一性。如何
调用客户端中为特定用户实现双工客户端合约接口的函数?是什么让他们联系在一起?会议?
注意:我知道如果不阅读那篇文章,这可能很难理解。我已尽力以通用的方式询问它。
问候
NLV
wcf - 在每次 silverlight 投票时在服务器上运行的自定义代码。(轮询双工)
当 silverlight 客户端每次轮询服务器以保持连接处于活动状态时,是否可以运行自定义代码。我的应用程序是可从 silverlight3 获得的彗星式轮询双工通信的实现。我发现它在每次投票时都会发送以下 Soap 消息。
wcf - 如何调试与多个客户端连接的 WCF 服务 - .NET
我编写了一个带有异步回调客户端的双工合同的 WCF 服务。当多个客户端连接时我遇到了一些问题,我不知道如何调试服务。对此有何见解?
谢谢你。
NLV
c# - 从异步 WCF 双工调用更新 asp.net 页面 - 对象范围 - ASP.NET
我有以下疑问。我有一个页面“MyPage”,并且我在页面类中声明了几个字典对象。
我的疑问是
- 如果我将字典声明为私有非静态对象,我将无法在该页面类中的函数中使用它(该对象为空)
- 但是,如果我将字典声明为静态的,我就可以跨函数跨对象。但是该对象对于现在打开页面的所有用户来说是否相同(猜测每个用户将拥有一个页面实例反过来又具有页面类的实例,并且类的静态变量在所有实例中都是不变的类)
我的理解对吗?如何声明该对象在页面类中的所有函数中都可用,并且对于页面的每个实例(用户)都是唯一的。
更新1
Okie,我发现页面类中字典对象的初始化是在不同的线程中完成的(WCF Duplex 回调)。但是在主页线程中,字典对象仍然保持为空(未初始化)。有任何想法吗?
更新2
编组 - 有用吗?
更新3
回复约翰-
感谢您的回复。我现在面临的问题是将数据从客户端的 WCF 回调类(将在单独的线程中调用)传递到 asp.net 页面。那么我该怎么做呢?视图状态可以帮助我跨请求持久化数据。但是,当服务器调用回调通知更改时,我应该如何将更改(数据)传递给 UI 线程(asp.net 页面)?
c# - “OperationContext.Current.GetCallbackChannel”实际上是做什么的?
OperationContext.Current.GetCallbackChannel 实际上做了什么?它如何识别每个客户?
我的 WCF 服务遇到问题。如果两个以上的用户连接到服务,我从服务发送给客户端的所有“有趣的更改”都将发送给第二个加入的用户。
例如,如果 A、B、C、D 加入服务,如果我通过回调将更改发送到 C 和 D,它将发送到 B。
有任何想法吗?
详情:
客户端:ASP.NET Web 应用程序
绑定:netTCPBinding
更新1
好的,我找到了问题的原因。我在 IIS 中托管了 asp.net 客户端。例如客户端的 URL 是http://url1。如果我在不同的机器上打开页面的多个实例并加入服务,回调通道总是指向页面的第一个实例(我从不同的机器打开站点)。但是,如果我在 IIS 中的不同站点下托管 asp.net 客户端,则回调通道是唯一的。对此有什么想法吗?
wcf - 如何处理 WCF 双工超时?
过去两天我一直在网上搜索,但绝不能让我的 WCF Duplex 服务正常工作。我创建了一个可以从 skydrive 下载的演示项目:
为了尽量减少可能的错误原因,我决定在回调处理程序中只返回一个短字符串,因为这样就不会超过最大消息大小限制或任何内容。通常,我的 WCF 服务需要一些时间(+15 分钟)来计算结果,然后将其返回给客户端。为了模拟这一点,我在 DoWork() 中让执行线程休眠了 12 分钟。
我得到的异常总是提到可能的问题receiveTimeout
,应该增加它以防止出现问题。但是,receiveTimeout
(以及我知道的任何其他超时)设置为三个小时。
还有一件事:我使用的是 .NET Framework 3.5 SP1,并且在使用 WsDUalHttpBinding 而不是 netTcpBinding 时也会出现问题。
wcf - 双工 WCF 服务 - 直接调用和回调不使用相同的通道
我的目标是在没有打开传入端口的情况下访问防火墙后面的 WCF 服务。我选择的解决方案是在公共端托管双工 WCF 服务,该服务具有与不涉及防火墙时使用的相同合同作为回调。
如果我使用 netTcpBinding 它可以工作,但由于我需要流式通信,所以我必须使用自定义绑定。
一切正常,直到我提高防火墙。此时,直接调用(从防火墙后面)工作正常,但回调不能(防火墙阻止它)。
问题是为什么?他们不应该使用与预定义的 netTcpBinding 相同的频道吗?
这是我在 app.config 中的频道堆栈:
wcf - WCF 双工回调示例失败
为了磨练一些示例服务以用作我们内部场景的参考,我创建了这个 WCF 双工通道示例,汇集了多年来发现的几个示例。
双工部分不起作用,我希望我们能一起解决。我讨厌发布这么多代码,但我觉得我已经将它缩减到尽可能短的 WCF,同时整合了我希望社区审查的所有部分。这里可能有一些非常糟糕的想法,我并不是说它是正确的,这就是我到目前为止所得到的。
有三个部分。通道、服务器和客户端。三个项目,这里是三个代码文件。没有 XML 配置,一切都被编码进去。然后是代码输出。
Channel.proj / Channel.cs
Server.proj / Server.cs,引用Channel、System.Runtime.Serialization、System.ServiceModel
Client.proj / Client.cs,引用 Channel、System.Runtime.Serialization、System.ServiceModel
整理输出:
正如安德鲁所指出的,问题并不是那么不言自明。此“整理输出”不是所需的输出。相反,我希望服务器正在运行,Ping 和注册成功,然后每隔 5 秒,服务器会“发送”HELLO?(#m)“同步”并且客户端将立即转换并返回,服务器将接收并打印出来。
相反,ping 工作,但第一次尝试回调故障,在重新连接时到达客户端但不返回服务器,并且一切都断开连接。
我看到的唯一例外与通道先前发生故障并因此无法使用有关,但尚未发现导致通道达到该状态的实际故障。
[OperationalBehavior(IsOneWay= true)]
我已经多次使用类似的代码。奇怪的是,这个看似更常见的案例却让我如此悲痛。
我不明白的在服务器端捕获的异常是:
System.TimeoutException:“发送到 schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous 的此请求操作未在配置的范围内收到回复超时 (00:00:00)。分配给此操作的时间可能是较长超时的一部分。这可能是因为服务仍在处理操作或因为服务无法发送回复消息。请考虑增加操作超时(通过将通道/代理转换为 IContextChannel 并设置 OperationTimeout 属性)并确保服务能够连接到客户端。”
wcf - 求WCF双工“TwoWay”订阅+回调示例
再次更新赏金,因为我真的需要知道如何让它发挥作用,或者明确回答为什么它不会。
让双向 (IsOneWay = false) WCF 客户端-服务器在 .Net 3/3.5 中工作真是费尽心思。
客户端成功注册服务后,服务的周期性 Announcement() 回调注册的客户端。现在是客户端或服务器挂起,直到服务器的 SendTimeout(调整为 2 秒)过去。那么服务器端出现超时异常如下。只有这样,客户端用户代码才会立即接收方法调用并尝试返回一个值。到那时,客户端的套接字被中止并且 WCF 的东西失败了。
在我看来,客户端上的某些东西正在将其本地 WCF 队列从处理中挂起,直到套接字超时,但还不足以取消本地方法调用。但是,如果可以相信以下异常,则服务器正在尝试将操作发送到http://schemas.microsoft.com/2005/12/ServiceModel/Addressing/Anonymous(不合适!)并且正在超时。也许该 URI 只是远程连接客户端的“名称”,因为 WCF 知道出于错误消息的目的引用它,它似乎只是意味着它无法加载 URI。我不知道是服务器先失败还是客户端先失败。
我已经尝试添加 WCF 跟踪,但我没有获得更多信息。
类似的示例代码是here,但它一定是太多无法消化。我已经尝试过该代码的变体。
.net - WCF服务接口交换
我想避免 WCF 中的双工 Chanel 并在客户端创建回调服务,将客户端地址传递给服务器,以便服务器可以随时调用客户端。(可能不同的绑定等)
如何将回调接口传递给客户端?(我仍然希望服务器管理这个接口,避免把它放在单独的 DLL 中。有什么想法吗?谢谢