c# – 连接到信号器集线器

c# – 连接到信号器集线器,第1张

概述我在控制台应用程序中创建了一个简单的SignalR集线器: class Program{ static void Main(string[] args) { using (WebApp.Start<Startup>("http://localhost:1968")) { Console.WriteLine("Ser 我在控制台应用程序中创建了一个简单的SignalR集线器:
class Program{    static voID Main(string[] args)     {            using (WebApp.Start<Startup>("http://localhost:1968"))        {            Console.Writeline("Server running!");                    Console.Readline();            }     } }public static class UserHandler{    public static HashSet<string> ConnectedIDs = new HashSet<string>();}[Hubname("echo")]public class EchoHub : Hub {     public voID Say(string message)     {         Trace.Writeline("hub: "+message);        ClIEnts.All.AddMessage(message);    }    public overrIDe Task OnConnected()    {        UserHandler.ConnectedIDs.Add(Context.ConnectionID);        return base.OnConnected();    }    public overrIDe Task Ondisconnected()    {        UserHandler.ConnectedIDs.Remove(Context.ConnectionID);        return base.Ondisconnected();    }}class Startup {     public voID Configuration(IAppBuilder app)     {         app.MapSignalR();    } }

当我尝试从Silverlight应用程序连接它时,它成功:

static Microsoft.AspNet.SignalR.ClIEnt.HubConnection signalR { get; set; }public static Microsoft.AspNet.SignalR.ClIEnt.IHubProxy signalRhub { get; set; }public static voID StartSignalR(){    var url = "http://localhost:1968";    signalR = new Microsoft.AspNet.SignalR.ClIEnt.HubConnection(url);    signalR.Received += signalR_Received;    signalRhub = signalR.CreateHubProxy("echo");    signalR.Start().Wait();    signalRhub.Invoke("Say","hub invoked");}

我的下一步是从jquery连接SignalR集线器:

<script src="../Scripts/jquery-1.6.4.Js"></script><script src="../Scripts/jquery.signalR-2.1.0.Js"></script><script>    $(function ()    {        var connection = $.hubConnection("http://localhost:1968");        connection.start()            .done(function () {                console.log('connected');                connection.send("success?");            })            .fail(function (a) {                console.log('not connected'+a);            });    });</script>

当我尝试运行此脚本时,它会给出错误:

"XMLhttpRequest cannot load localhost:1968/signalr/negotiate?clIEntProtocol=1.4&_=1404978593482. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin <code>http://localhost:55282</code> is therefore not allowed access."

为什么我可以从Silverlight页面连接到集线器(托管在localhost:3926中)
当我运行jquery脚本(托管在localhost:55282)时失败了吗?

如何在jquery和SignalR集线器之间建立有效连接?

解决方法 更改
$(function ()    {    var connection = $.hubConnection("http://localhost:1968");    connection.start()        .done(function () {            console.log('connected');            connection.send("success?");        })        .fail(function (a) {            console.log('not connected'+a);        });});

$(function (){var connection = $.hubConnection("http://localhost:1968");var hub = connection.createHubProxy("echo");hub.on("AddMessage",Method);connection.start({ Jsonp: true })            .done(function () {            console.log('connected');            hub.say("success?");        })        .fail(function (a) {            console.log('not connected'+a);        });});function Method(messageFromHub){alert(messageFromHub);}

class Startup {     public voID Configuration(IAppBuilder app)     {         app.MapSignalR();    } }

class Startup {     public voID Configuration(IAppBuilder app)     {         app.MapSignalR(new HubConfiguration() { EnableJsONP = true });} }

应该这样做.

app.MapSignalR(new HubConfiguration() { EnableJsONP = true });}

connection.start({ Jsonp: true })

将允许跨站点请求

总结

以上是内存溢出为你收集整理的c# – 连接到信号器集线器全部内容,希望文章能够帮你解决c# – 连接到信号器集线器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247250.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存