【问题标题】:SignalR 2.0 - Accessing hub without proxySignalR 2.0 - 在没有代理的情况下访问集线器
【发布时间】:2014-05-31 01:37:18
【问题描述】:

如果 html/js 和集线器位于同一台服务器上,我可以使用以下 html/js 代码成功调用我的 signalR 2.0 集线器。

<!DOCTYPE html>
<html>
<head>
<title>Test SignalR 2.0</title>
<style type="text/css">
    .container {
        background-color: #99CCFF;
        border: thick solid #808080;
        padding: 20px;
        margin: 20px;
    }
</style>
</head>
<body>
<div class="container">
    <input type="text" size=100 id="message" />
    <input type="button" id="sendmessage" value="Send" />
</div>
<ul id="discussion"></ul>
<!--Script references. -->
<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.0.3.min.js"></script>
<script src="/signalr/hubs"></script>

<script type="text/javascript">
    $(function () {
        //Instanciating Hub-Class
        var srv = $.connection.pvHub;

        // Definition of function called by HUB (Server)
        srv.client.receiveData = function (message) {
            var encodedMsg = $('<div />').text(message).html();
            $('#discussion').append('<ul>' + encodedMsg + '</ul><br>');
        };

        // Start the connection.
        $.connection.hub.start().done(function () {
            $('#sendmessage').click(function () {
                // call HUB function (on Server)
                srv.server.getBnoData($('#message').val());
                // Clear text box and reset focus for next comment.
                $('#message').val('').focus();
            });

        });
    });
</script>

现在我正在尝试使用客户端上的相同 html/js 文件调用集线器。但没有成功。 我认为,在实例化连接并启动它时,集线器代理和集线器的 URL 存在一些问题。但严格来说不知道如何解决这个问题。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: javascript asp.net proxy signalr


    【解决方案1】:

    您只需要启用跨域支持。阅读:

    http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#crossdomain

    另外,如果您已经设置了它,您必须更新您的客户端代码以指向正确的端点,方法是将 /signalr/hubs 相对地址更新为绝对地址,并为 @ 指定一个有效的绝对地址987654323@。比如:

    <script src="http://foo.com/signalr/hubs"></script>
    <script>
    
        ...
        $.connection.hub.url = 'http://foo.com/signalr';
        ...
    
    </script>
    

    【讨论】:

    • 谢谢你。但是我的代码中的第一行实例化了我的“pvHub”。我如何必须在此行之前实例化我能够提前设置“connection.hub.url =” Thx 的“连接”。
    • 完全按照我显示的方式指定网址,并在开始连接的行之前执行此操作
    • 非常感谢。在服务器上设置 CORS 后,一切运行完美!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多