使用websockes原型从silverlight客户端发送消息的问题

时间:2011-04-25 07:07:35

标签: silverlight websocket


我需要使用websockets来实现我的silverlight客户端和服务器之间的双向通信。我可以连接/断开服务器和 OnOpen &客户端和服务器中的 OnClose 事件都很好,但我在向服务器发送消息时遇到问题:
当我向服务器发送消息时,我在客户端没有收到任何错误,因为我在服务器上的服务的 OnMessage 操作从未调用过(从客户端发送的消息没有任何问题但是服务器永远不会收到!) 您可以获取我的示例代码here 感谢

2 个答案:

答案 0 :(得分:1)

策略文件仅存在于服务器端。

请看一下: MSDN

您可以通过HTTP或策略服务器(在端口943上)传递策略文件。

要使用HTTP检索套接字策略文件,应用程序应在传递给Socket :: ConnectAsync方法的System.Net.Sockets :: SocketAsyncEventArgs实例上将SocketAsyncEventArgs :: SocketClientAccessPolicyProtocol属性设置为Http。

祝你好运

答案 1 :(得分:0)

  

“使用时的另一个限制   套接字类是那个   目标端口范围即网络   应用程序允许连接   必须在4502-4534范围内。   这些是唯一的目标端口   允许连接来自   使用Silverlight应用程序   插座。“

     

来源:
  http://msdn.microsoft.com/en-us/library/cc645032%28v=VS.95%29.aspx

     

拥有一个策略文件只会成功   使用上述端口范围。   如果没有策略文件,它将无法正常工作   一点都不这两个(还有更多)   限制不适用于受信任的   应用

http://social.msdn.microsoft.com/Forums/en/silverlightdeveloper/thread/b4f7120d-71d9-4132-9c31-b456803cd32f


<强>更新

尝试将您的政策文件更改为:

<access-policy>
<cross-domain-access>
<policy>
  <allow-from http-request-headers="*">
    <domain uri="*" />
  </allow-from>
  <grant-to>
    <socket-resource port="4502-4534" protocol="tcp" />
  </grant-to>
</policy>
</cross-domain-access>
</access-policy>