C#——signalr实现简单的网页实时聊天
1.新建asp.net web应用程序,然后在vs的NuGet包中下载安装Microsoft.AspNet.SignalR
2.右键项目-》新建项,选择signalr集线器类,并写入代码,namespace与类名记得改成实际类名
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;namespace SignalRWebMvcTest
{[HubName("msgHub")]//客户端调用,首字母要小写public class MsgHub : Hub{//在hub中编写的方法,都是要被客户端调用的方法[HubMethodName("sendMsg")]//客户端调用,首字母要小写public void SendMsg(string name, string txt){//服务器主动调用客户端的方法,即客户端必须有getMsg方法Clients.All.getMsg(name,txt);}}
}
3.右键项目,新建普通类Startup.cs
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;[assembly: OwinStartup(typeof(SignalRWebMvcTest.Startup))]
namespace SignalRWebMvcTest
{public class Startup{public void Configuration(IAppBuilder app){// Any connection or hub wire up and configuration should go hereapp.MapSignalR();}}
}
这时可以先测试一下,运行项目,在网页中输入地址http://localhost:8120/signalr/hubs
,注意填入实际端口号。网页显示部分内容如下:
加深部分为在hub中编写的方法,如果显示没问题,代表hub上线成功。
4.编写html页面,代码如下:
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head><meta charset="utf-8" /><title></title><script src="Scripts/jquery-1.6.4.js"></script><script src="Scripts/jquery.signalR-2.4.1.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>
注意头部引用的<script src="Scripts/jquery-1.6.4.js"></script> <script src="Scripts/jquery.signalR-2.4.1.js"></script> <script src="/signalr/hubs"></script>
脚本,前两个是你的项目中的实际脚本文件,最后一个是在运行时动态生成的,实际使用时需要修改前两个。
5.打开两个网页进行测试
网页的逻辑是:
1.先输入登录名,然后点击登录,如果输入不为空,则解除发送按钮的disabled
属性
2.输入相应的信息,点击发送信息,两个网页都会看到发送的信息,即实现了简单的实时聊天。
参考:
asp.net mvc 实现简单的实时消息推送
微软官方教程:教程: SignalR 2 和 MVC 5 的实时聊天
C#——signalr实现简单的网页实时聊天相关推荐
- 用signalr实现简单的网页实时聊天
开发工具与关键技术: js 作者:GuanLW 撰写时间:2022/3/18 第一步:先在vs的NuGet包中下载安装Microsoft.AspNet.SignalR.安装完成后会多以下几个文件 第二 ...
- 网页实时聊天之PHP如何实现websocket
网页实时聊天之PHP如何实现websocket 一.总结 一句话总结: 应用 PHP 的 socket 函数库:PHP 的 socket 函数库跟 C 语言的 socket 函数非常类似 PHP 实现 ...
- websocket 西部数码php_网页实时聊天之PHP实现websocket
前言 websocket 作为 HTML5 里一个新的特性一直很受人关注,因为它真的非常酷,打破了 http "请求-响应"的常规思维,实现了服务器向客户端主动推送消息,本文介绍如 ...
- ajax长轮询 java web_网页实时聊天之js和jQuery实现ajax长轮询
众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...
- java+jquery实现长轮询案例_网页实时聊天之js和jQuery实现ajax长轮询
众所周知,HTTP协议是无状态的,所以一次的请求都是一个单独的事件,和前后都没有联系.所以我们在解决网页实时聊天时就遇到一个问题,如何保证与服务器的长时间联系,从而源源不段地获取信息. 一直以来的方式 ...
- 来看看这款简单优雅的实时聊天软件
今天要介绍的是一个用于即时消息渠道的客户支持工具 -- Chatwoot,它可以帮助企业提供特殊的客户支持. Chatwoot的发展始于2016年,但未能作为一家企业获得成功,最终在2017年关闭了这 ...
- MVC SignalR Hub实时聊天实时Web解决方案
目录 介绍 背景 1. WebSocket 2.服务器发送事件(SSE) 3.永远的Frame 4.轮询 5.长轮询 场景描述 先决条件 使用代码 第1步:创建项目 步骤2:打开PM以安装依赖项文件 ...
- 基于websocket的网页实时消息推送与在线聊天(上篇)
文章目录 @[toc] 基于websocket的网页实时消息推送与在线聊天(上篇) "使用dwebsocket在django中实现websocket" websocket原理图 d ...
- 使用nettyio+socket.io搭建简单的网页聊天室
使用nettyio+socket.io搭建简单的网页聊天室 1 目录结构 2 maven 依赖配置 <project xmlns="http://maven.apache.org/PO ...
最新文章
- android调用c闪退未看到log,解决:Android开发 看不到崩溃的日志
- Linux 下安装 Oracle9i
- VIVOtech:使用近场通信(NFC)技术的免接触付款解决方案的市场领导者
- 让Spring架构减化事务配置(转)
- 热门事件和书籍中资料管理中国
- C#之获取系统cpu
- Python: str.split()和re.split()的区别
- 使用企业微信的jsdk调用企业微信api--前端
- 基于SSM的企业人事管理系统
- sql 语句,主键外键详解
- 南方cass提取坐标生成表格_如何在CAD中或者CASS中将坐标导入到EXCEL表格(个人笔记)...
- 【函数】- 如何在C++中求平方根?
- Windows优化大师下载| Windows优化大师下载
- TapTap 发布开发者服务:降低开发者研运成本 聚焦创作优质内容
- 关于中小学编程教育的一些看法
- 亚洲和欧洲的分界线是谁划分的?
- 互联网数据中心(Internet Data Center,IDC)
- 慧算账解读新《代理记账管理办法》
- 基于Singer混沌映射的麻雀搜索算法-附代码
- MySQL 自动故障转移工具--mysqlfailover
热门文章
- 用计算机绘制函数图象教案,信息技术应用 用计算机画函数图象优质课教案设计...
- 自动驾驶汽车如何有助于可持续移动规划?
- Java中的委托和继承(Delegation and Inheritance)
- 第二天-03-安卓手机的入侵实验
- python技能书测评
- 汇编指令及其英文全称
- FPGA小技巧-左移右移实现
- 资金流入流出预测(上)(阿里云天池大赛)
- Apache的winnt_accept: Asynchronous AcceptEx failed问题
- 2021爱分析・数据智能平台实践报告—重构数据智能时代的数据基础设施