我目前正在支持一个较旧的应用程序,该应用程序具有一个具有socket.io(v1.3.7)连接的node.js(v0.12.13)服务器。该服务器很好地支持浏览器客户端。
socket.attach(http, { 'transports': ['polling','websocket'], 'allowUpgrades': true });
socket.attach(https, { 'transports': ['polling','websocket'], 'allowUpgrades': true });
socket.sockets.on('connection', function (socket) {
// Process stuff here
});
我们的要求还要求我们允许旧版Windows应用程序连接到节点服务器,并且我已经使用过SocketIoClientDotNet / EngineIoClientDotNet,这或多或少可以正常工作(对于某些{{3} },我需要处理)。
所以我想我会尝试基于exceptions使用.NET ClientWebSocket方法,其中uri =“ ws://10.10.5.112”:
static async Task Connect(string uri)
{
ClientWebSocket sock = new ClientWebSocket();
await sock.ConnectAsync(new Uri(uri), CancellationToken.None);
}
但是我得到以下例外:
System.AggregateException
HResult=0x80131500
Message=One or more errors occurred.
Source=mscorlib
StackTrace:
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at WebsocketClientTest.Program.Main(String[] args) in C:\Source\test\WebsocketClientTest\Program.cs:line 16
Inner Exception 1:
WebSocketException: Unable to connect to the remote server
Inner Exception 2:
WebException: The underlying connection was closed: The connection was closed unexpectedly.
当然,我没有看到服务器上的任何连接尝试,但是Wireshark告诉我.Net应用程序正在尝试启动连接,但没有收到node.js服务器的响应。看起来在socket.io方面是失败的,但是任何能帮助我的想法都值得赞赏。