Nul*_*nce 6 c# asp.net-mvc signalr
根据这里的wiki文章:https://github.com/SignalR/SignalR/wiki/Hubs
我可以通过我的集线器获取我的MVC应用程序来广播消息:
$(function () {
// Proxy created on the fly
var chat = $.connection.chatterBox;
// Declare a function on the chat hub so the server can invoke it
chat.client.addMessage = function (message) {
$('#messages').append('<li>' + message + '</li>');
};
// Start the connection
$.connection.hub.start().done(function () {
$("#broadcast").click(function () {
// Call the chat method on the server
chat.server.send($('#msg').val());
});
});
});
Run Code Online (Sandbox Code Playgroud)
我的Hub位于一个名为ServerHub.dll的独立DLL中,如下所示
namespace ServerHub
{
public class ChatterBox : Hub
{
public void Send(string message)
{
Clients.All.addMessage(message);
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,通过上面的设置,我可以浏览几个不同浏览器上的相同URL,并从一个浏览器发送消息,将反映在所有其他浏览器中.
但是,我现在要做的是从控制器内发送消息.
所以在我开箱即用的MVC互联网应用程序中,在HomeController,About动作中,我添加了这个:
using ServerHub;
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
var context = GlobalHost.ConnectionManager.GetHubContext<ChatterBox>();
context.Clients.All.say("HELLO FROM ABOUT");
return View();
}
Run Code Online (Sandbox Code Playgroud)
但上述似乎并没有起作用.没有错误消息或运行时错误.代码执行,只是我在其他浏览器上看不到该消息.
我哪里做错了?
dav*_*owl 10
您正在调用一个名为"say"的方法,并且您只在客户端上定义了一个名为"addMessage"的方法.
更改:
context.Clients.All.say("HELLO FROM ABOUT");
Run Code Online (Sandbox Code Playgroud)
至:
context.Clients.All.addMessage("HELLO FROM ABOUT");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2203 次 |
| 最近记录: |