我的 signalR 客户端缺少哪些基本组件

What basic component am I missing from my signalR client?

本文关键字:组件 signalR 客户端 我的      更新时间:2023-09-26

按照本教程:

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

我设法实现了一个非常简单的信号聊天客户端。也就是说,一个广播从javascript发送给它的消息的中心。

太好了,这行得通。

但是现在我尝试使用相同的索引.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变量的第一个引用上,我有未定义的错误。

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

我还可以确认我的jQuery库(正确引用)和jQuery signalR脚本(同样,没有404s,全部正确引用)的存在。

您正在尝试访问在主机应用程序中生成的chatHub。看起来您的代码无法获得该chatHub.您需要确保在客户端应用程序中包含集线器,如下所示:

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

尝试使用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());
    });
});