丶万一 2021-11-26 10:29 采纳率: 100%
浏览 60
已结题

NET 5.0 请教以下如何在Controller中调用JS函数

我是用的是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中似乎无法实现,也可能是类被移植到别的模块中了。
如果有其他更便捷的处理方式也可以,帮帮忙!

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2021-11-26 13:35
    关注

    b/s系统和和c/s系统不一样,前端没有能直接链接udp的类。

    前端要实时数据可以用websocket,websocket服务器.net有Fleck.dll类库,前端原生websocket进行连接。客户端(目测应该是c/s模式)发送的数据题主如果有能力改的话,应该也可以用websocket发送数据到websocket服务器,然后服务器端fleck收到收据后可在转发给前端websocket,前端websocket接受数据进行需要的处理。

    还有个折中的办法,udp接收到的数据放到application对象中,就是用application建立一个集合,方便前端访问。或者直接写入数据库中也行。新建一个action读取application或者数据库中内容输出【注意不能按照题主那样在OnUdpMessage回调中输出内容 】,然后前端用setInterval+ajax不断的请求action获取数据

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月4日
  • 已采纳回答 11月26日
  • 创建了问题 11月26日

悬赏问题

  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红
  • ¥15 想问问富文本拿到的html怎么转成docx的
  • ¥15 我看了您的文章,遇到了个问题。