【发布时间】:2016-03-10 12:20:39
【问题描述】:
我已经使用 ServiceHost 创建了一个 WebSocket 服务器:
using (ServiceHost host = new ServiceHost(typeof(WebSocketsServer), baseAddress))
{
CustomBinding binding = new CustomBinding();
binding.Elements.Add(new ByteStreamMessageEncodingBindingElement());
HttpTransportBindingElement transport = new HttpTransportBindingElement();
transport.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always;
transport.WebSocketSettings.CreateNotificationOnConnection = true;
binding.Elements.Add(transport);
host.AddServiceEndpoint(typeof(IWebSocketsServer), binding, "");
host.Open();
}
它适用于我的 JavaScript 应用程序。目前我正在尝试添加对 WebSocket Secure 的支持。我已将 HttpTransportBindingElement 更改为 HttpsTransportBindingElement,将 baseurl 更改为 https://,并将 JavaScript 应用程序中的连接 url 更改为 wss://
using (ServiceHost host = new ServiceHost(typeof(WebSocketsServer), baseAddress))
{
CustomBinding binding = new CustomBinding();
binding.Elements.Add(new ByteStreamMessageEncodingBindingElement());
HttpsTransportBindingElement transport = new HttpsTransportBindingElement();
transport.WebSocketSettings.TransportUsage = WebSocketTransportUsage.Always;
transport.WebSocketSettings.CreateNotificationOnConnection = true;
binding.Elements.Add(transport);
host.AddServiceEndpoint(typeof(IWebSocketsServer), binding, "");
host.Open();
}
我期待它会工作,应用程序启动时没有错误,但在连接 JavaScript 后我收到此错误。
WebSocket connection to 'wss://localhost:5555/wsData' failed: Error in connection establishment: net::ERR_CONNECTION_RESET
为了安全使用 WebSocket,是否需要对 ServiceHost 进行任何其他设置?微软的 ServiceModel 中是否实现了 WebSocket 安全?
【问题讨论】:
标签: c# .net wcf websocket servicehost