实时通讯

过完2018年最后一个长假,看了年初给自己的flag,默默的发现距离感还是很强的。。。。

先说正题,最近在项目中碰到了实时通讯的需求,翻看了很多资料,最终选取signalr。

附上链接https://www.asp.net/signalr

项目是基于Angular4的,后端采用的Abp框架,自带通知架构。(https://aspnetboilerplate.com/Pages/Documents/Notification-System)

先说怎么将signalr引入项目中。

1、npm i signalr

在angular-cli.json文件里引入:"../node_modules/signalr/jquery.signalR.js"

2、建立连接

var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy(‘contosoChatHub‘);
contosoChatHubProxy.on(‘addContosoChatMessageToPage‘, function(name, message) {
    console.log(name + ‘ ‘ + message);
});
connection.start().done(function() {
    // Wire up Send button to call NewContosoChatMessage on the server.
    $(‘#newContosoChatMessage‘).click(function () {
        contosoChatHubProxy.invoke(‘newContosoChatMessage‘, $(‘#displayname‘).val(), $(‘#message‘).val());
        $(‘#message‘).val(‘‘).focus();
                });
    });

3、后端配合

后端主要在于跨域,微软的官方文档里也有写到如何解决(https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#how-to-establish-a-cross-domain-connection

4、代码基本:using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Cors;
using Owin;
namespace MyWebApplication
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Branch the pipeline here for requests that start with "/signalr"
            app.Map("/signalr", map =>
            {
                // Setup the CORS middleware to run before SignalR.
                // By default this will allow all origins. You can
                // configure the set of origins and/or http verbs by
                // providing a cors options with a different policy.
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
                {
                    // You can enable JSONP by uncommenting line below.
                    // JSONP requests are insecure but some older browsers (and some
                    // versions of IE) require JSONP to work cross domain
                    // EnableJSONP = true
                };
                // Run the SignalR pipeline. We‘re not using MapSignalR
                // since this branch already runs under the "/signalr"
                // path.
                map.RunSignalR(hubConfiguration);
            });
        }
    }
}

基础部分很是简单通透

在消息处理这一块,ABP已经处理的很好了,只要调取相应的方法即可。区分一下消息的时效性(暂时的消息还是永久性的消息)。

原文地址:https://www.cnblogs.com/Vibge/p/9774652.html

时间: 2024-11-23 20:42:41

实时通讯的相关文章

用PHP 和Websocket实现实时通讯---GoEasy

说到websocket大家一定不会陌生,WebSocket是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).一开始的握手需要借助HTTP请求完成,当浏览器和服务器握手成功后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送.有了websocket, 大家就可以摒弃以往用轮询来实现实时通讯的方式了. 有了websocket后,应运而生的相关产品也不在少数,选择也成了最大的问题,在这里你可能会说"干嘛用别人的,我可以自己用原始的开发一个啊&q

用JAVA和Websocket实现实时通讯

说到websocket大家一定不会陌生,WebSocket是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).一开始的握手需要借助HTTP请求完成,当浏览器和服务器握手成功后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送.有了websocket, 大家就可以摒弃以往用轮询来实现实时通讯的方式了. 有了websocket后,应运而生的相关产品也不在少数,选择也成了最大的问题,在这里你可能会说"干嘛用别人的,我可以自己用原始的开发一个啊&q

Node.js 切近实战(十一) 之实时通讯

曾经在幽幽暗暗反反复复中追问,才知道平平淡淡从从容容才是真,听着歌曲,写博客,感觉就来了. 今天我们主要看一下Socket.IO实时通讯,先看一下界面. .row  .col-md-9   .panel.panel-primary    .panel-heading     h3.panel-title(style='font-size:13px;') Chat Message    .panel-body#div_msgbody(style='min-height:590px;max-heig

通过WebSocket实现实时通讯C#语言编写服务端

无意中发现js有webSocket对象于是百度了一下客户端代码与服务端代码没有现成的 有的就有一些简单了连接例子有的还不好使 于是就自己整理了一下 c#编写的服务端代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; using System.Text.RegularExpression

Android IOS WebRTC 音视频开发总结(六二)-- 大数据解密国外实时通讯行业开发现状

本文主要介绍国外实时通讯行业现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 上篇文章我们采用百度搜索指数来分析国内webrtc现状,得到不少同行认同,所以我们今天决定采用同样的方法来分析国外webrtc现状,不过这次的数据源来自google趋势,另外分析的同时会将国内与国外进行比对,让大家更好地了解两者之间的差异: 图表1:2005年-21015年的搜索趋势 分析说明: 1.整体趋势与国内一样,2011年

Android IOS WebRTC 音视频开发总结(六一)-- 大数据解密国内实时通讯行业开发现状

本文主要介绍国内实时通讯行业现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 这几年移动互联网发展势头很猛,与之相应的就是实时通讯需求增加,但这都只是主观感受,缺乏数据证明,但今天我想到其实看webrtc的开发热度就可以说明很多问题,因为现在不管是搞pc还是移动端的实时通讯开发,基本上都是在用webrtc,他很具有代表性. 不过问题来了不管是刚接触还是接触webrtc很久的人可能都对国内webrtc应用现状

用C(++)和Websocket实现实时通讯

说到websocket大家一定不会陌生,WebSocket是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex).一开始的握手需要借助HTTP请求完成,当浏览器和服务器握手成功后,浏览器和服务器之间就形成了一条快速通道.两者之间就直接可以数据互相传送.有了websocket, 大家就可以摒弃以往用轮询来实现实时通讯的方式了. 有了websocket后,应运而生的相关产品也不在少数,选择也成了最大的问题,在这里你可能会说"干嘛用别人的,我可以自己用原始的开发一个啊&q

ASP.NET MVC4使用SignalR实现实时通讯

本文介绍在ASP.NET MVC框架中如何使用SignalR进行实时通讯 1.如何在Web中实现实时通讯 实时通讯: 例如“消息提示”.“web聊天室”等.由于web浏览器中使用的是http协议(大部分请求)进行通讯,http被称为是无状态,每次http请求和应答都是通过建立tcp连接,发送数据反馈应答,关闭tcp连接.而且必须是客户端先请求服务器端,服务器端再反馈给客户端消息.并不能实现服务器端主动给客户端推送消息的功能. 实时通讯的传统实现方法: 1.刷新整个页面.这种方法最为原始,页面中设

Java开发之使用websocket实现web客户端与服务器之间的实时通讯

使用websocket实现web客户端与服务器之间的实时通讯.以下是个简单的demo. 前端页面 1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" &qu