开发工具与关键技术: js

作者:GuanLW

撰写时间:2022/3/18

第一步:先在vs的NuGet包中下载安装Microsoft.AspNet.SignalR。安装完成后会多以下几个文件

第二步:右键项目->新建项,选择signalr集线器类,并写入代码,namespace与类名记得改成实际类名

如下:

using Microsoft.AspNet.SignalR;using Microsoft.AspNet.SignalR.Hubs;using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace webLoans{[HubName("msgHub")]//客户端调用,首字母要小写public class MsgHub : Hub{//在hub中编写的方法,都是要被客户端调用的方法[HubMethodName("sendMsg")]//客户端调用,首字母要小写public void SendMsg(string name, string txt){//服务器主动调用客户端的方法,即客户端必须有getMsg方法Clients.All.getMsg(name, txt);}}}

第三步:右键项目,新建普通类Startup.cs

如下:

using Microsoft.Owin;using Owin;using System;using System.Threading.Tasks;[assembly: OwinStartup(typeof(webLoans.Startup))]namespace webLoans{public class Startup{public void Configuration(IAppBuilder app){// 有关如何配置应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=316888app.MapSignalR();}}}

这时可以先测试一下,运行项目,在网页中输入地址https://localhost:44340/signalr/hubs,注意填入实际端口号。网页显示部分内容如下:

第四步:编写html页面,代码如下:

@{Layout = null;}<!DOCTYPE html><html><head><meta charset="utf-8" /><title></title><script src="~/Scripts/jquery-1.6.4.js"></script>//实际的路径<script src="~/Scripts/jquery.signalR-2.4.3.js"></script>//实际的路径<script src="/signalr/hubs"></script>//动态生成的<script>//绑定登录按钮的事件$(function () {$("#btnLogin").click(function () {login();});});function login() {if ($("#txtName").val().length > 0)sessionStorage.setItem("user", $("#txtName").val());else {alert("登录失败");return;}$("#sendBtn").removeAttr("disabled");serverClient();}//服务器连接操作function serverClient() {//注册服务器连接var msgHub = $.connection.msgHub;//2.给客户端注册方法,被服务器调用的方法,//服务器主动调用给txt内容,客户端被动接收//接收到之后做什么msgHub.client.getMsg = function (name, txt) {//var txtTemplate = "<div><span>{{name}}</span>:<span>{{content}}</span></div> ";//var html = txtTemplate.replace('{{name}}', name).replace('{{content}}', txt);//$("#msgList").append(html);var txtHtml = '<li><strong>' + htmlEncode(name)+ '</strong>: ' + htmlEncode(txt) + '</li>';$("#msgList").append(txtHtml);//alert(txt);}//3.启动连接并绑定处理事件$.connection.hub.start().done(function () {$("#sendBtn").click(function () {msgHub.server.sendMsg(sessionStorage.getItem("user"), $("#txtMsg").val());$('#txtMsg').val('').focus();})}).fail(function () {});}// 将发来的信息转化为html标签以便添加到页面function htmlEncode(value) {var encodedValue = $('<div />').text(value).html();return encodedValue;}</script></head><body><div id="msgList"></div><input type="text" id="txtName" name="name" value="" /><button id="btnLogin">登录</button><input type="text" id="txtMsg" name="name" value="" /><button id="sendBtn" disabled="disabled">发送消息</button></body></html>

注意头部引用的脚本,前两个是你的项目中的实际脚本文件,最后一个是在运行时动态生成的,实际使用时需要修改前两个。

第五步:打开两个网页进行测试,效果如下:

先输入登录名,然后发送信息即可。可以实时聊天。

这是我所学到的一些知识,在此分享给大家,希望可以帮助到你们。

以上就是我的分享,新手上道,请多多指教。如果有更好的方法或不懂得地方欢迎在评论区教导和提问喔!

用signalr实现简单的网页实时聊天相关推荐

  1. C#——signalr实现简单的网页实时聊天

    1.新建asp.net web应用程序,然后在vs的NuGet包中下载安装Microsoft.AspNet.SignalR 2.右键项目->新建项,选择signalr集线器类,并写入代码,nam ...

  2. 网页实时聊天之PHP如何实现websocket

    网页实时聊天之PHP如何实现websocket 一.总结 一句话总结: 应用 PHP 的 socket 函数库:PHP 的 socket 函数库跟 C 语言的 socket 函数非常类似 PHP 实现 ...

  3. websocket 西部数码php_网页实时聊天之PHP实现websocket

    前言 websocket 作为 HTML5 里一个新的特性一直很受人关注,因为它真的非常酷,打破了 http "请求-响应"的常规思维,实现了服务器向客户端主动推送消息,本文介绍如 ...

  4. ajax长轮询 java web_网页实时聊天之js和jQuery实现ajax长轮询

    众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...

  5. java+jquery实现长轮询案例_网页实时聊天之js和jQuery实现ajax长轮询

    众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...

  6. 来看看这款简单优雅的实时聊天软件

    今天要介绍的是一个用于即时消息渠道的客户支持工具 -- Chatwoot,它可以帮助企业提供特殊的客户支持. Chatwoot的发展始于2016年,但未能作为一家企业获得成功,最终在2017年关闭了这 ...

  7. MVC SignalR Hub实时聊天实时Web解决方案

    目录 介绍 背景 1. WebSocket 2.服务器发送事件(SSE) 3.永远的Frame 4.轮询 5.长轮询 场景描述 先决条件 使用代码 第1步:创建项目 步骤2:打开PM以安装依赖项文件 ...

  8. 基于websocket的网页实时消息推送与在线聊天(上篇)

    文章目录 @[toc] 基于websocket的网页实时消息推送与在线聊天(上篇) "使用dwebsocket在django中实现websocket" websocket原理图 d ...

  9. 使用nettyio+socket.io搭建简单的网页聊天室

    使用nettyio+socket.io搭建简单的网页聊天室 1 目录结构 2 maven 依赖配置 <project xmlns="http://maven.apache.org/PO ...

最新文章

  1. C语言的32个关键字
  2. java的游戏图片怎么加载_java游戏图像加载速度非常慢
  3. Winform ComboBox控件高亮显示
  4. UCenter 表结构
  5. 列表反向组成数字相加,并输出数组反向组成列表
  6. win7电脑蓝屏的解决方法
  7. 数据统计告诉你,程序员是不是35岁就退休
  8. C语言:斗地主发牌程序
  9. linux中mysql不显示中文_linux中解决mysql中文乱码方法
  10. python中创建类的作用_Python中类的创建与使用详解
  11. Android开发之自定义UI组件和属性
  12. xml配置service服务器文件路径,xml配置service服务器文件路径
  13. VAT number 增值税号码以及GST
  14. 理解Linux的.a、.so和.o文件
  15. 联通云服务器如何开放端口
  16. 2.JAVA自带的序列化反序列化机制
  17. “国防七校”之一西工大遭境外网络攻击
  18. 字符串编辑距离之Damerau–Levenshtein Distance
  19. 访问学者在美国生活有哪些饮食文化特点?
  20. 中级微观经济学:Chap 3 偏好

热门文章

  1. 敞开心扉,一起聊聊Java多线程
  2. MATLAB符号运算(七)
  3. 爬虫:Robots协议
  4. 计算机通讯技术核心期刊有哪些,通信类核心期刊汇总.doc
  5. Python字符串格式化 (%占位操作符)
  6. ORA-01034和ORA-27101的解决方法
  7. 使用Python将文件名中的汉字序号改为阿拉伯数字序号
  8. redis命令之string类型incr/decr命令用法详情
  9. 【深度】大变局!标准化资产的在线理财时代来临
  10. Android中的Activity