Javascript 从fiddler或Swift而不是js呼叫信号器
有没有办法在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
$(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>: ' + 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版本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")
}