Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用信号器从C#调用JS方法?_Javascript_C#_Asp.net_Signalr_Dom Events - Fatal编程技术网

Javascript 使用信号器从C#调用JS方法?

Javascript 使用信号器从C#调用JS方法?,javascript,c#,asp.net,signalr,dom-events,Javascript,C#,Asp.net,Signalr,Dom Events,我知道有很多关于SignalR的例子,但我似乎无法让它工作,我希望你们中的一位能够(完整地)展示一个网页(线程循环,这样我们可以看到它反复发生)如何调用页面上的JS方法,并更改文本标签或创建弹出窗口,或者,只是为了让我们看到方法的执行 我会给你我的代码,也许你可以指出错误,但是任何服务器->客户机调用的基本示例,如果没有客户机首先发出请求,都会令人惊讶 枢纽: 调用(线程化)方法: 我遇到的问题是一个自动关闭的JS导入标记,它停止了页面上所有正在运行的JS 对于其他有相同问题的人,下面是我在服务

我知道有很多关于SignalR的例子,但我似乎无法让它工作,我希望你们中的一位能够(完整地)展示一个网页(线程循环,这样我们可以看到它反复发生)如何调用页面上的JS方法,并更改文本标签或创建弹出窗口,或者,只是为了让我们看到方法的执行

我会给你我的代码,也许你可以指出错误,但是任何服务器->客户机调用的基本示例,如果没有客户机首先发出请求,都会令人惊讶

枢纽:

调用(线程化)方法:


我遇到的问题是一个自动关闭的JS导入标记,它停止了页面上所有正在运行的JS

对于其他有相同问题的人,下面是我在服务器上的工作示例,在没有客户机任何提示的情况下将数据推送到所有客户机:

Javascript:

$(function () {
    // Proxy created on the fly
    var chat = $.connection.chat;

    // Declare a function so the hub can invoke it
    chat.addMessage = function (message) {
        document.getElementById('lblQuestion').innerHTML = message;
    };

    // Start the connection
    $.connection.hub.start();
});
HTML:


你能让它在没有线程的情况下工作吗?不,它只是从不执行JS。我甚至设置了一个WCF服务,并用文本从Winforms应用程序调用该服务,然后让该服务调用JS方法,但仍然不起作用。Chrome控制台中也没有错误…嗯。。。粗略检查一下,这看起来还可以。您看到网络面板中实际建立的连接了吗?如果链接一个.done(函数(){alert(“Connected!”;}),会发生什么;从start()返回的承诺?它着火了吗?如果在测试页面中放置一个文本框,该文本框实际上从网页本身调用chat.send(),会怎么样。。。你看到那个消息了吗?你能设置一个简单的回显服务吗?你在用什么IIS?Windows 7 Home上的IIS 7存在连接并发问题。@Allov-我正在Windows 7上使用IIS 7。我应该怎么做/改变?
private void DoIt()
{
    int i = 0;
    while (true)
    {
        var hubContext = GlobalHost.ConnectionManager.GetHubContext<Chat>();
        hubContext.Clients.addMessage("Doing it... " + i);
        i++;
        Thread.Sleep(500);
    }
}
$(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) {
        confirm("Are you having fun?");
        confirm(message);
    };

    // Start the connection
    $.connection.hub.start();        
});
$(function () {
    // Proxy created on the fly
    var chat = $.connection.chat;

    // Declare a function so the hub can invoke it
    chat.addMessage = function (message) {
        document.getElementById('lblQuestion').innerHTML = message;
    };

    // Start the connection
    $.connection.hub.start();
});
<h2 id="lblQuestion" runat="server">Please wait for a question...</h2>
[HubName("chat")]
public class Chat : Hub
{
    public void Send(string message)
    {
        // Call the addMessage method on all clients
        Clients.addMessage(message);
    }

    public void Broadcast(string message)
    {
        IHubContext context = GlobalHost.ConnectionManager.GetHubContext<Chat>();
        context.Clients.addMessage(message);
    }
}
private void DoIt()
{
    int i = 0;
    while (true)
    {
        var hubContext = GlobalHost.ConnectionManager.GetHubContext<Chat>();
        hubContext.Clients.addMessage("Doing it... " + i);
        i++;
        Thread.Sleep(500);
    }
}
    var thread = new Thread(new ThreadStart(DoIt));

    thread.SetApartmentState(ApartmentState.STA);
    thread.Start();