我是用的是NET 5.0创建的ASP.NET MVC程序,需求是程序启动后通过Socket接收用户端数据然后推送到前端上。
public class MapController : Controller
{
private readonly INodeServices _services;
public MapController(INodeServices services)
{
_services = services;
}
static CnUDP udpClient; // 封装的一个UDP通讯
bool isrun = true; // 判断是否启动了UDP
public IActionResult Index()
{
if (isrun) {
isrun = false;
if (udpClient == null)
{
udpClient = new CnUDP(5088);
//订阅接收信息事件
udpClient.OnUdpMessage += OnRecv;
//启动接收线程
udpClient.StartListen();
}
}
return View();
}
///<summary>
/// 信息处理函数
/// </summary>
/// <param name="buffer">接收到的数据</param>
/// <param name="point">数据来源信息</param>
IActionResult OnRecv(byte[] buffer, System.Net.IPEndPoint point)
{
Console.WriteLine(point.Address.ToString());
// 解析消息
double dX = BitConverter.ToDouble(buffer, 0);
double dY = BitConverter.ToDouble(buffer, 8);
ViewData["dX"] = dX;
ViewData["dY"] = dY;
Console.WriteLine($"\n收到位置信息:\nX: {dX} Y:{dY}");
// 如何传递给前端???
return View();
}
}
我目前的处理办法是,建立一个Socket的接收客户端的数据,在解析数据之后将数据推送到前端,但是卡在了C#调用JS函数这一步,网上找了一些教程如Pages,Context的办法在NET5.0中似乎无法实现,也可能是类被移植到别的模块中了。
如果有其他更便捷的处理方式也可以,帮帮忙!