SignalR 跨域解决方案全面
SignalR 分:PersistentConnection和Hub 2种模式。
跨域又分:UseCors和JsonP 2种方法
所以例子写了4种。
核心代码:
UseCors
//PersistentConnection Mode
app.UseCors(CorsOptions.AllowAll);
//PersistentConnection Mode
app.MapSignalR<MyConnection>("/server", new ConnectionConfiguration()
{
});
// 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888
//Hub Mode
app.MapSignalR("/lcc", new HubConfiguration());
Use JsonP
//PersistentConnection Mode
app.MapSignalR<MyConnection>("/server", new ConnectionConfiguration()
{
EnableJSONP = true
});
// 有关如何配置应用程序的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkID=316888 //Hub Mode
app.MapSignalR("/lcc", new HubConfiguration() { EnableJSONP = true });
Cross HUb 前端
// 建立对应server端Hub class的对象,请注意geffChat的第一个字母要改成小写
var chat = $.connection.myHub; $.connection.hub.url = 'http://localhost:2001/lcc'; //把connection打开
$.connection.hub.start().done(function () {
chat.server.hello();
}); // 定义client端的javascript function,供server端hub,通过dynamic的方式,调用所有Clients的javascript function
chat.client.sendMessage = function (message) {
//当server端调用sendMessage时,将server push的message数据,呈现在wholeMessage中
$('#messages').append('<li>' + message + '</li>');
}; $("#broadcast").click(function () {
chat.server.sendMessage($('#msg').val());
$('#msg').val("");
});
$("#btnStop").click(function () {
$.connection.hub.stop();
});
Cross Connection 前端
var connection = $.connection("http://localhost:2001/server");
connection.received(function (data) {
$('#messages').append('<li>' + data + '</li>');
});
connection.start();
$("#broadcast").click(function () {
connection.send($('#msg').val());
});
$("#btnStop").click(function () {
connection.stop();
});
JsonP HUb
// 建立对应server端Hub class的对象,请注意geffChat的第一个字母要改成小写
var chat = $.connection.myHub; $.connection.hub.url = 'http://localhost:16727/lcc'; //把connection打开
$.connection.hub.start({ jsonp: true }).done(function () {
chat.server.hello();
}); // 定义client端的javascript function,供server端hub,通过dynamic的方式,调用所有Clients的javascript function
chat.client.sendMessage = function (message) {
//当server端调用sendMessage时,将server push的message数据,呈现在wholeMessage中
$('#messages').append('<li>' + message + '</li>');
}; $("#broadcast").click(function () {
chat.server.sendMessage($('#msg').val());
$('#msg').val("");
});
$("#btnStop").click(function () {
$.connection.hub.stop();
});
JsonP connection
var connection = $.connection("http://localhost:16727/server");
connection.received(function (data) {
$('#messages').append('<li>' + data + '</li>');
});
connection.start({ jsonp: true });
$("#broadcast").click(function () {
connection.send($('#msg').val());
});
$("#btnStop").click(function () {
connection.stop();
});
代码下载:http://download.csdn.net/detail/shikyoh/9734460
SignalR 跨域解决方案全面的更多相关文章
- 跨域解决方案一:使用CORS实现跨域
跨站HTTP请求(Cross-site HTTP request)是指发起请求的资源所在域不同于请求指向的资源所在域的HTTP请求. 比如说,我在Web网站A(www.a.com)中通过<img ...
- asp.net web api2.0 ajax跨域解决方案
asp.net web api2.0 ajax跨域解决方案 Web Api的优缺点就不说了,直接说怎么跨域,我搜了一下,主要是有两种. 一,ASP.NET Web API支持JSONP,分两种 1, ...
- iframe跨域解决方案
公司某个功能用的是iframe,由于跨域的原因,我们不能直接设置父级页面iframe的高度,所以用了一个中间页home来完成父级页面iframe的高度设置,这种中间页其实很多时候不好用,因为涉及到页面 ...
- JSON跨域解决方案收集
最近面试问的挺多的一个问题,就是JavaScript的跨域问题.在这里,对跨域的一些方法做个总结.由于浏览器的同源策略,不同域名.不同端口.不同协议都会构成跨域:但在实际的业务中,很多场景需要进行跨域 ...
- Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持
Atitit.js跨域解决方案attilax大总结 后台java php c#.net的CORS支持 1. 设置 document.domain为一致 推荐1 2. Apache 反向代理 推荐1 ...
- js最全的十种跨域解决方案
在客户端编程语言中,如javascript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义.同 源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问 ...
- 跨域解决方案之JSONP,通过借助调用百度搜索的API了解跨域案例
跨域解决方案之JSONP 同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web ...
- nginx跨域解决方案
nginx跨域解决方案Access to Font at 'http://47.104.86.187/yinjiatoupiao2/iconfont/iconfont.woff' from origi ...
- 小白的springboot之路(六)、跨域解决方案CORS
0-前言 前后端分离.分布式集群,经常都会涉及到跨域访问,而浏览器基于同源策略,正常情况下是不能跨域的,这就需要我们解决跨域访问问题:spring boot解决跨域也比较简单: 1-CORS跨域解决方 ...
随机推荐
- WM_COMMAND 和 WM_NOTIFY 的区别
当我们按下一个菜单选项,或者一个控件需要通知父窗口一个事件发生(如鼠标单击.双击等),或者快捷键被按下时,Windows将会发送一个 WM_COMMAND 消息给父窗口.那么 WM_COMMAND 消 ...
- VC++中如何让RadioButton分组,并且互斥
首先让两个RadioButton的Group属性为False. 将两个RadioButton放入一个GroupBox里面,即可如果分成多个组,则将多组Radio分别用GroupBox框起来,并将每组的 ...
- zufeoj 花生(The Peanuts)
花生(The Peanuts) 时间限制: 1 Sec 内存限制: 128 MB提交: 3 解决: 2[提交][状态][讨论版] 题目描述 鲁宾逊先生和他的宠物猴,多多,非常喜欢花生.有一天,他们 ...
- 编译openwrt失败 “Please install theopenssl library”
make menuconfig出现了错误 Build dependency: Please install theopenssl library(with development headers) P ...
- Unity3D 4.3在Windows下打包iOS资源
想当年,想弄iOS的版本必须弄台mac机器,虽然一开始要弄iOS的时候觉得在mac上开发感觉挺高富帅的,但是做多了之后就觉得在mac上开发各种不方便.现在好了,Unity3D 4.3开始支持在Wind ...
- Mybites和hibernate的优缺点和区别
Hibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分. Mybatis 是另外一种优秀的O/R mapping框架.目前属于apache的 ...
- 第八章 数据库连接JDBC(待续)
············
- Python re模块与正则表达式的运用
re模块 永远不要起一个py文件的名字,这个名字和你已知的模块同名 查找 findall(): 匹配所有 每一项都是列表中的一个元素 语法 : findall(正则判断条件,要判断字符 ...
- java堆栈区别(个人理解)
java把内存分为2种,一种是堆内存,一种是栈内存. 堆内存:通过new关键字出来的对象放在堆内存中,堆内存可以动态的分配内存大小,垃圾回收器自动回收不再使用的数据,由于动态分配内存所以存取的速度较慢 ...
- python实现文件下载的方法总结
前端时间遇到一个通过url下载文件的需求,只需要简单的编写一个py脚本即可.从网上搜了下python实现文件下载的方法,总结如下,备查. 以下方法均已测试,环境win8.1 python2.6/2. ...