我正在尝试查找如何使用ASP.NET MVC中的Web服务获取实时更新的示例(版本无关紧要)并将其发布回特定用户的浏览器窗口。
一个完美的例子就是一种类似于facebooks的聊天系统,只要发布了一条消息,就会将响应发送到相应的浏览器(客户端),而不是在每次检查新消息的页面上创建一个javascript计时器5秒。我已经听过很多次关于同步程序的类型,但我在代码中寻找这个,而不是使用第三方软件。
我想具体做什么:
我正在尝试创建一个基于ASP.NET MVC的SQL和Web Service的Web浏览器聊天客户端。当您有2-4个不同的用户名登录到系统时,他们聊天并相互发送保存在SQL数据库中的消息,然后当有新条目(或有人发送新消息)时,Web服务会看到此更改然后向接收用户显示新更新的消息。 E.G Full Chat使用Web服务同步聊天。
一般来说真正困扰我的是我不知道如何检测是否有新的东西添加到SQL表中,而且我也不知道如何将信息从SQL发送到特定用户的Web浏览器。因此,如果网站上有人userA,userB,userC all,我不知道如果只是用户名“guest”,如何只向userC显示消息。我很想知道这个功能不仅适用于我现在想要创建的内容,还适用于未来的项目。
有人能指出我正确的方向吗?我非常了解SQL,而且我是中间的Web服务。
答案 0 :(得分:2)
您可以使用SignalR执行此任务。
Via Scott Hanselman:
创建Asp.net mvc空应用程序
安装SignalR的nuget包
添加新的Controller(例如HomeController):
public class HomeController:Controller { 公共ActionResult索引() { return View(); } }
使用javascript引用创建视图索引: @ Url.Content( “〜/脚本/ jQuery的1.6.4.min.js”)” “@ Url.Content(” 〜/脚本/ jquery.signalR.js “)” 和功能:
$(function () {
var hub = $.connection.chatHub;
hub.AddMessage = function (msg) {
$('#messages').append('<li>' + msg + '</li>');
};
$.connection.hub.start().done(function() {
$('#send').click(function() {
hub.send($('#msg').val());
});
});
});
创建类ChatHub:
公共类ChatHub:Hub { public void Send(string message) { Clients.AddMessage(消息); } }