【vue + signalR】

Vue客户端

vue-cli已经把项目搭建起来了  首先在终端安装一下signalR插件

npm install @microsoft/signalr 

 在需要的地方直接引入

import * as signalR from "@microsoft/signalr";
export default {
      data() {
        return {
          connection: null,
          msgs: [],
          dataInfo: { status1: "off", status2: "off" }

        }
      }, 
   created(){ 
  
      this.connection = new signalR.HubConnectionBuilder()
      .withUrl("http://10.1x.xx.xx:xxxx/abcd") // 此处填服务器地址
      .withAutomaticReconnect()  // 断开自动重连
      .build();
 

            // --  这地方二选一  --  ( 不要全拿走复制粘贴 )
      // (1)注册方法( 给后端调用的,需要在methods中定义 )
      this.connection.on("showmsg", this.ShowMsg);
      this.connection.on("updatedata", this.UpdateData);
      // (2)或者也可以是下面这种  二选一

        this.connection.on("change", (message) => {
              // 打印直接可以看到你的数据返回  ( methods里面不需要再定义 )
            console.log("change数据内容  -->", JSON.parse(message));
        });
       
 
      // 开始连接
      this.connection
        .start()
        .then((res) => console.log("Connected!"))
        .catch((err) => {
          console.log(err);
        }); 

    }, 
      methods:{
        ShowMsg(msgInfo) {
          this.msgs.push(msgInfo);
        },
        UpdateData(dataMsg) {
          this.dataInfo = dataMsg;
        },
        // 调用后端方法(直接调用invoke注入,需要和后端对接方法名及参数)
        receiveMessage() {
          let params = "Hello";
          this.connection
            .invoke("TestMsg", params)  // invoke(方法名, 参数)
            .then(() => console.log("send succeed!"));

        } 
      },
      watch:{
        
      },
     
      computed:{

      }
    }

这一趴把你自己的服务器地址填写对就ok了 剩下你就完全可以复制粘贴了  该解释的 上面注释都解释了!!!!

--------------------------------------------如果安装插件的时候报错------------------------------------------------

你可以尝试一下清空一下缓存

$ npm config set proxy null
$ npm config set https-proxy null

然后配置一下淘宝镜像

# 淘宝源(推荐)
$ npm config set registry http://registry.npm.taobao.org/

然后这个时候你在重新下载一下   npm install @microsoft/signalr  应该就ok了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
非常好的问题,以下是Vue .Net Core SignalR详细配置的步骤: 1. 在Vue项目中安装signalr客户端npm包 ``` npm install @aspnet/signalr ``` 2. 在Vue项目中创建一个名为`SignalR.js`的文件,并编写以下内容: ```javascript import * as signalR from "@aspnet/signalr"; export default { install(Vue, options) { Vue.prototype.$signalR = new signalR.HubConnectionBuilder() .withUrl(options.url) .configureLogging(signalR.LogLevel.Information) .build(); Vue.prototype.$signalR.start(); }, }; ``` 3. 在Vue项目中创建一个名为`main.js`的文件,并编写以下内容: ```javascript import Vue from "vue"; import App from "./App.vue"; import SignalR from "./SignalR"; Vue.use(SignalR, { url: "http://localhost:5000/chatHub", // SignalR后端地址 }); new Vue({ render: (h) => h(App), }).$mount("#app"); ``` 4. 在.Net Core项目中安装`Microsoft.AspNetCore.SignalR`包 5. 在`Startup.cs`中添加以下代码: ```csharp using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace SignalRServer { public class Startup { public IConfiguration Configuration { get; } public Startup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0); services.AddSignalR(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); endpoints.MapHub<ChatHub>("/chatHub"); }); } } } ``` 6. 在.Net Core项目中创建一个名为`ChatHub.cs`的文件,并编写以下内容: ```csharp using Microsoft.AspNetCore.SignalR; using System.Threading.Tasks; namespace SignalRServer { public class ChatHub : Hub { public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); } } } ``` 7. 在Vue项目中使用以下代码与SignalR服务器通信: ```javascript // 发送消息 this.$signalR.invoke("SendMessage", user, message); // 接收消息 this.$signalR.on("ReceiveMessage", (user, message) => { console.log(user + ":" + message); }); ``` 希望这个解答可以帮助你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值