【问题标题】:What basic component am I missing from my signalR client?我的 signalR 客户端缺少什么基本组件?
【发布时间】:2015-01-14 14:04:55
【问题描述】:

按照本教程:

http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr

我设法实现了一个非常非常简单的 Signalr 聊天客户端。也就是广播从 javascript 发送给它的消息的集线器。

很好,很有效。

但现在我尝试使用相同的 index.html 文件和 js(即发送消息的代码)创建第二个项目,但出现未定义的错误。教程指定的文件和我所做的(在“远程”项目中)文件之间的唯一区别是,我已经明确指定了connection.hub.url,正如我从各种帖子中被告知的那样。

我到底错过了什么?仅将 url 设置为托管信号器集线器的其他站点显然是不够的,我是否需要添加某种代理?在这一点上完全糊涂了。

我的 javascript 文件(网站上没有集线器的 javascript):

$(function () {
            var chat = $.connection.chatHub;
            $.connection.hub.url = "http://localhost:14113/signalr";

            chat.client.broadcastMessage = function (name, message) {
                // Do something
            };

            $.connection.hub.start().done(function () {
                $('#sendmessage').click(function () {
                    chat.server.send($('#displayname').val(), $('#message').val());
                });
            });
        });

在第一次引用 chat 变量时我有未定义的错误。

注意:我可以确认两个站点都在运行,中心可用,因为我可以导航到另一个选项卡(原始解决方案中的相同 index.html 文件)并且它按预期运行。

我还可以确认我的 jQuery 库(正确引用)和 jQuery signalR 脚本(再次,没有 404,所有引用正确)的存在。

【问题讨论】:

  • 您是否将集线器包含在您的第二个项目中(类似于

标签: javascript c# jquery asp.net signalr


【解决方案1】:

您正在尝试访问在您的主机应用程序中生成的chatHub。看起来你的代码在获取chatHub 时失败了。您需要确保在客户端应用程序中包含集线器,如下所示:

<script src="localhost:14113/signalr/hubs"></script>

【讨论】:

  • 再次感谢,请问 - 为什么我在第一个站点的文件系统中看不到信号器/集线器?我现在就试试这个,但如果我引用了一些不存在的东西,我会感到惊讶 - 是否有它的处理程序或其他东西?
  • 因为 Signalr 生成的集线器基于您从集线器派生的所有 c# 类。
  • 我认为这已经奏效了,我仍然无法确定信号器目录在磁盘上的位置,但至少我现在只有一些 CORS 访问问题,我可以解决这些问题。
  • 正如我所说,当您请求它时,您将无法找到该目录(基本上这是一个返回 javascript 的操作)
  • 排序!!非常感谢队友,真的很感激。一切都按我的需要工作。
【解决方案2】:

尝试使用xdomain 的代理,例如

$(function () {

    $.connection.hub.url = 'http://localhost:14113/signalr';

    $.connection.hub.start({ xdomain: true })
        .done(function () { console.log('Connected. connectionId : ' + $.connection.hub.id); })
        .fail(function () { console.log('Could not connect!');
    });

    var proxy = $.connection.chatHub;

    proxy.client.broadcastMessage = function(uri) {
        //Do something
    };

    $('#sendmessage').click(function () {
        proxy.server.send($('#displayname').val(), $('#message').val());
    });
});

【讨论】:

    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 2017-01-01
    • 2018-09-09
    相关资源
    最近更新 更多