问题描述
我正在尝试使用ClientWebSocket连接到WebSocket服务器(演示或本地主机).我有一个例外:
I am trying to connect to WebSocket server (demo or localhost) using ClientWebSocket.I get an exception:
System.Net.WebSockets.WebSocketException
HResult=0x80004005
Message=Unable to connect to the remote server
Source=System.Net.WebSockets.Client
StackTrace:
Inner Exception 1:
HttpRequestException: No connection could be made because the target machine actively refused it
Inner Exception 2:
SocketException: No connection could be made because the target machine actively refused it
我也有成功连接的JavaScript websocket客户端.为什么我无法使用ClientWebSocket进行连接?
I also have JavaScript websocket client which connected succefully. Why I can't connect using ClientWebSocket?
using System;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;
using StreamJsonRpc;
namespace ConsoleApp1
{
class Program
{
static async Task Main(string[] args)
{
Console.WriteLine("Hello World!");
try
{
Console.WriteLine("Press Ctrl+C to end.");
//await ConnectAsync("ws://localhost:63762/ws");
await ConnectAsync("ws://demos.kaazing.com/echo");
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.ReadKey();
}
}
static async Task ConnectAsync(string url)
{
using (var socket = new ClientWebSocket())
{
Console.WriteLine("---> JSON-RPC Client connecting to " + url);
await socket.ConnectAsync(new Uri(url), CancellationToken.None);
Console.WriteLine("-> Connected to web socket. Establishing JSON-RPC protocol...");
}
}
}
}
推荐答案
更新24/07
如果是这样,那就没有意义了.它对我有效.
If so, it doesn't make sense. It works on me.
.net 控制台应用程序
中有 ws
客户端的代码.
There are codes of ws
client in .net console application
.
static async Task Main(string[] args)
{
Console.WriteLine("Hello World!");
try
{
Console.WriteLine("Press Ctrl+C to end.");
await ConnectAsync("ws://localhost:8080");
//await ConnectAsync("ws://demos.kaazing.com/echo");
Console.ReadLine();
}
catch (OperationCanceledException)
{
// This is the normal way we close.
}
}
static async Task ConnectAsync(string url)
{
using (var socket = new ClientWebSocket())
{
Console.WriteLine("---> JSON-RPC Client connecting to " + url);
await socket.ConnectAsync(new Uri(url), CancellationToken.None);
Console.WriteLine("-> Connected to web socket. Establishing JSON-RPC protocol...");
await Send(socket, "Hello from client.");
await Receive(socket);
await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "close", CancellationToken.None);
}
}
static async Task Send(ClientWebSocket socket, string data) =>
await socket.SendAsync(Encoding.UTF8.GetBytes(data), WebSocketMessageType.Text, true, CancellationToken.None);
static async Task Receive(ClientWebSocket socket)
{
var buffer = new ArraySegment<byte>(new byte[2048]);
do
{
WebSocketReceiveResult result;
using (var ms = new MemoryStream())
{
do
{
result = await socket.ReceiveAsync(buffer, CancellationToken.None);
ms.Write(buffer.Array, buffer.Offset, result.Count);
} while (!result.EndOfMessage);
if (result.MessageType == WebSocketMessageType.Close)
break;
ms.Seek(0, SeekOrigin.Begin);
using (var reader = new StreamReader(ms, Encoding.UTF8))
Console.WriteLine(await reader.ReadToEndAsync());
}
} while (true);
}
我的 node.js
服务器上带有websocket的ws代码.
There are ws codes of my node.js
server with websocket.
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8080 })
wss.on('connection', (ws) => {
ws.on('message', (message) => {
console.log(`Received message => ${message}`)
})
ws.send('Hello from server!')
})
console.log('Server running at ws://127.0.0.1:8080');
________________________________________________________________
ClientWebSocket
无法在Python中直接连接到 socket.io
.
_______________________________________________________________
ClientWebSocket
can not directly connect to socket.io
in Python.
这里是 @Jim Stott的解决方案.在 CodePlex 上有一个项目( NuGet ),它也是 socket.io
的 C#
客户端.
Here is a solution from @Jim Stott.There is a project on CodePlex ( NuGet as well ) that is a C#
client for socket.io
.
示例客户风格:
socket.On("news", (data) => {
Console.WriteLine(data);
});
下面的问题也有很多方法可以满足您的需求.
通过c#与socket.io服务器通信
And also there are many ways to meet your needs from the question below.
Communicating with a socket.io server via c#
此处是有关 WebSocket与Socket.io 的文章
这篇关于ClientWebSocket-SocketException:无法建立连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!