我有一个 NET Core 3.1 API,我在其中创建了一个 websocket 服务器并在 API 运行时启动它
API 中的 Program.cs 类:
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using System;
using System.IO;
using WebSocketSharp;
using WebSocketSharp.Server;
namespace aspnetcore_api_server
{
public class Program
{
public class ServerData : WebSocketBehavior
{
protected override void OnMessage(MessageEventArgs e)
{
Console.WriteLine("WS Status: Received message from client: " + e.Data);
Send(e.Data);
}
}
public static void Main(string[] args)
{
var wssv = new WebSocketServer("ws://127.0.0.1:1234");
wssv.Start();
Console.WriteLine("WS Server started on ws://127.0.0.1:1234");
Console.ReadKey();
wssv.Stop();
}
}
}
然后我有一个 ASP NET MVC Web 应用程序,我试图从它开始与服务器的连接:
using System;
using WebSocketSharp;
namespace aspnet_client
{
public class WebSocketService
{
public WebSocketService()
{
}
public void StartConnection()
{
using (WebSocket ws = new WebSocket("ws://127.0.0.1:1234"))
{
ws.Connect();
ws.Send("Hello from client ASP NET web app!");
}
}
private static void Ws_OnMessage(object sender, MessageEventArgs e)
{
Console.WriteLine("Receiveed from the server: " + e.Data);
}
}
}
当我尝试通过从客户端执行 ws.Send 将消息发送到服务器时,它会引发错误说明: System.InvalidOperationException: '当前连接状态未打开。
在 CMD 中,我正在运行命令netstat -aon,我可以清楚地看到 TCP 端口已打开并正在侦听(见附图)。
我在客户端和服务器端都使用 WebSocketSharp。
有人可以说明我在这里可能做错了什么或错过了什么吗?