SignalR 中 Hub 的骨干模型

发布于 2024-12-25 08:50:51 字数 919 浏览 1 评论 0原文

我如何在 Backbone 中创建/转换此脚本为可以使用 SignaR Hub 的模型?例如:

<script type="text/javascript">
    $(function () {
        // Proxy created on the fly
        var chat = $.connection.chat;

        // Declare a function on the chat hub so the server can invoke it
        chat.addMessage = function (message) {
            alert("message");
        };

        // Start the connection
        $.connection.hub.start();
    });
</script>

编辑

我确实想出了这个:

    window.Message = Backbone.Model.extend({
    hub: undefined,
    initialize: function () {
        this.hub = $.connection.message;
    },
    addMessage: function (message) {
        alert(message);
    },
    connect: function () {
        $.connection.hub.start();
        var messages = this.hub.getAll();//get messages
    }
});

但这由于以下错误而不起作用:

此错误::55885 意外的响应代码:200

How can i create/convert this script into model in Backbone that can use SignaR Hubs? For example:

<script type="text/javascript">
    $(function () {
        // Proxy created on the fly
        var chat = $.connection.chat;

        // Declare a function on the chat hub so the server can invoke it
        chat.addMessage = function (message) {
            alert("message");
        };

        // Start the connection
        $.connection.hub.start();
    });
</script>

EDIT

I did come up with this:

    window.Message = Backbone.Model.extend({
    hub: undefined,
    initialize: function () {
        this.hub = $.connection.message;
    },
    addMessage: function (message) {
        alert(message);
    },
    connect: function () {
        $.connection.hub.start();
        var messages = this.hub.getAll();//get messages
    }
});

but this is not working due to the following error:

this error: :55885 Unexpected response code: 200

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风吹雪碎 2025-01-01 08:50:51

如果您使用默认设置,SignalR 将首先尝试向服务器发送 websockets 轮询。 :55885 只是您服务器的端口号。 Websockets 协议期望响应状态代码为 101(请参阅 http://dev.w3.org/html5/websockets /)。

如果运行 IIS,除非您的 Web 服务器运行 Windows 8 和 ASP.NET 4.5,否则它不会识别 Web 套接字请求并(开始推测)将其视为正常的获取请求并返回状态代码 200(正常)(结束推测)在 websockets 发起者看来,这是一个意想不到的响应。当这种情况发生时,SignalR 会退回到长轮询。

这可能无法回答您的问题,但它将帮助您理解收到的错误(这可能不是您的代码不起作用的原因)

If you use default settings SignalR will first try to send a websockets poll to the server. The :55885 is simply the port number of your server. Websockets protocol expects a response status code of 101 (see http://dev.w3.org/html5/websockets/).

If running IIS, unless you run Windows 8 with ASP.NET 4.5 your webserver, it will not recognize a web sockets request and (begin speculation) treat it as a normal get request and return status code 200 (OK) (end speculation) which is an unexpected response in the eyes of the websockets initiator. When this happens SignalR falls back to longpolling instead.

This might not answer your question but it will help you understand the error you get (which is likely not the reason why your code doesn't work)

绮烟 2025-01-01 08:50:51

另外,请查看 http://srtsolutions.github.com/backbone.signalr/ 这是Backbone.js/SignalR 集成 Nuget 包。

Also, check out http://srtsolutions.github.com/backbone.signalr/ which is a Backbone.js/SignalR integration Nuget package.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文