Javascript 从fiddler或Swift而不是js呼叫信号器

Javascript 从fiddler或Swift而不是js呼叫信号器,javascript,c#,signalr,fiddler,openstack-swift,Javascript,C#,Signalr,Fiddler,Openstack Swift,有没有办法在Fiddler或Swift中模拟js发送给信号器的内容: $(function () { // Declare a proxy to reference the hub. var chat = $.connection.chatHub; // Create a function that the hub can call to broadcast messages. chat.client.broadcastMessage = function (na

有没有办法在Fiddler或Swift中模拟js发送给信号器的内容:

$(function () {
    // Declare a proxy to reference the hub.
    var chat = $.connection.chatHub;
    // Create a function that the hub can call to broadcast messages.
    chat.client.broadcastMessage = function (name, message) {
        // Html encode display name and message.
        var encodedName = $('<div />').text(name).html();
        var encodedMsg = $('<div />').text(message).html();
        // Add the message to the page.
        $('#discussion').append('<li><strong>' + encodedName
            + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>');
    };
    // Get the user name and store it to prepend to messages.
    $('#displayname').val(prompt('Enter your name:', ''));
    // Set initial focus to message input box.
    $('#message').focus();
    // Start the connection.
    $.connection.hub.start().done(function () {
        $('#sendmessage').click(function () {
            // Call the Send method on the hub.
            chat.server.send($('#displayname').val(), $('#message').val());
            // Clear text box and reset focus for next comment.
            $('#message').val('').focus();
        });
    });
});
我也可以从其他服务器调用html页面。目标是在调用该方法时包含不同的客户端(不仅仅是js客户端)

我在斯威夫特试过这样称呼它:

// Default is false
SwiftR.useWKWebView = true

// Default is .Auto
SwiftR.transport = .ServerSentEvents

// Hubs...
hubConnection = SwiftR.connect("http://abc/HubSample") { [weak self] connection in
    connection.queryString = ["foo": "bar"]
    connection.headers = ["X-MyHeader1": "Value1", "X-MyHeader2": "Value2"]

    // This only works with WKWebView on iOS >= 9
    // Otherwise, use NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "SwiftR iOS Demo App"])
    connection.customUserAgent = "SwiftR iOS Demo App"

    self?.simpleHub = connection.createHubProxy("simpleHub")
    self?.complexHub = connection.createHubProxy("complexHub")

    self?.simpleHub.on("broadcastMessage") { args in
        let message = args![0] as! String
        let detail = args![1] as! String
        print("Message: \(message)\nDetail: \(detail)\n")
    }
但我一直在XCode和Safari开发工具中发现这个错误:

SwiftR无法处理消息h0z81qhh:错误域=WKErrorDomain Code=5“JavaScript执行返回了不受支持类型的结果” UserInfo={NSLocalizedDescription=JavaScript执行返回一个 不受支持类型的结果}

无法加载XMLHttpRequest . 访问控制允许原点不允许原点为null

从Swift调用它是理想的,但如果能从任何其他客户端(javascript除外)访问它,我会很高兴


有人试过这样做吗

我可以复制你想在Fiddler中做的事情。把它插到你的小提琴上。它确实触发了断裂点


data={“H”:“chathub”,“M”:“Send”,“A”:[“joe”,“2”],“I”:1}

该错误表示您有以下问题之一:

  • 无法从设备访问服务器
  • 您已经将SwiftR配置为使用SignalR版本2.2.0,但实际上运行的是其他版本,如2.0.0
  • 您正在将SwiftR与WKWebView一起使用,但尚未在服务器上启用CORS

  • 更新到SwiftR版本0.11.0,您将看到更好的错误消息。

    如果您使用纯WebSocket,您将不会遇到此类问题。然而,使用signalR,您必须为还没有默认客户机的平台编写自己的客户机(通过阅读其规范\文档和\或查看其.NET客户机的实现)。嗯。。。好的,我对此持开放态度。我会查一查的。你有我应该包含在搜索中的链接/关键字吗!?
    // Default is false
    SwiftR.useWKWebView = true
    
    // Default is .Auto
    SwiftR.transport = .ServerSentEvents
    
    // Hubs...
    hubConnection = SwiftR.connect("http://abc/HubSample") { [weak self] connection in
        connection.queryString = ["foo": "bar"]
        connection.headers = ["X-MyHeader1": "Value1", "X-MyHeader2": "Value2"]
    
        // This only works with WKWebView on iOS >= 9
        // Otherwise, use NSUserDefaults.standardUserDefaults().registerDefaults(["UserAgent": "SwiftR iOS Demo App"])
        connection.customUserAgent = "SwiftR iOS Demo App"
    
        self?.simpleHub = connection.createHubProxy("simpleHub")
        self?.complexHub = connection.createHubProxy("complexHub")
    
        self?.simpleHub.on("broadcastMessage") { args in
            let message = args![0] as! String
            let detail = args![1] as! String
            print("Message: \(message)\nDetail: \(detail)\n")
        }