【发布时间】:2012-10-01 07:17:20
【问题描述】:
我知道有很多关于 SignalR 的示例,但我似乎无法让它工作,我希望你们中的一个人能够(完整地)展示 WebPage(线程循环所以我们可以看到它一遍又一遍地发生)可以在页面上调用 JS 方法并更改文本标签或创建弹出窗口,或者只是为了让我们看到方法执行?
我会给你我的代码,也许你可以指出错误,但是任何基本的 Server->Client 调用示例都没有客户端首先发出请求,这将是惊人的!
枢纽:
[HubName("chat")]
public class Chat : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients?
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);
}
}
JS:
$(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();
});
【问题讨论】:
-
你能在没有线程的情况下让它工作吗?
-
不,它只是从不执行 JS。我什至设置了 WCF 服务并从带有文本的 Winforms 应用程序调用该服务,然后让该服务调用 JS 方法,但仍然无法正常工作。 Chrome 控制台中也没有错误...
-
嗯...粗略检查后看起来还不错。您是否看到网络面板中实际建立了连接?如果链接 .done(function () { alert("Connected!"); }); 会发生什么从 start() 返回的承诺?它会火吗?如果您在测试页面中放置一个实际从网页本身调用 chat.send() 的文本框会怎样……您看到该消息了吗?
-
你能设置一个简单的回显服务吗?您使用的是什么 IIS? Windows 7 Home 上的 IIS 7 存在连接并发问题。
-
@Allov - 我在 Windows 7 上使用 IIS 7。我应该做什么/改变什么?
标签: javascript c# asp.net signalr dom-events