目的:实现不同的界面同步更新数据
缺陷:网络发布后不能使用,没有加密处理
主体运行流程:
1.启动运行浏览器
2.执行Startup类中的app.MapSignalR();方法
3.引用JS脚本
4.脚本执行弹窗输入名字
5.在界面中输入值并按提交
6.提交的数据到ChatHub类中的Send()方法并执行 Clients.All.broadcastMessage(name, message);。
7. Clients.All.broadcastMessage(name, message);界面有声明过chatHub类的界面都会调用更新
8.改变界面的数据
官方案例地址:
http://code.msdn.microsoft.com/SignalR-Getting-Started-b9d18aa9
测试:
$(function () {
// 声明代理以引用集线器。
var chat = $.connection.chatHub;
//创建一个集线器可以调用广播消息的函数。
chat.client.broadcastMessage = function (name, message) {
// HTML编码显示名称和消息
var encodedName = $('<div />').text(name).html();
var encodedMsg = $('<div />').text(message).html();
// 将消息添加到页面
$('#discussion').append('<li><strong>' + encodedName
+ '</strong>: ' + encodedMsg + '</li>');
};
/*
alert() 弹出个提示框 (确定)
confirm() 弹出个确认框 (确定,取消)
prompt() 弹出个输入框 让你输入东西*/
//获取用户名并将其存储在消息中
$('#displayname').val(prompt('Enter your name:', ''));
// $('#displayname').val("35");
// 将初始焦点设置为消息输入框
$('#message').focus();
// 启动连接。
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
// 调用集线器上的发送方法
chat.server.send($('#displayname').val(), $('#message').val());
// 清除文本框并重新设置下一个注释的焦点
$('#message').val('').focus();
});
});
});
主要是上面的函数起到界面的更新。
总之:1.弹框输入 #displayname 的值。2.chat.server.send($('#displayname').val(), $('#message').val());获取输入框的值。3.执行方法send()4.Js脚本识别声明过的界面从而更新重新连接。
能实现界面的同步更新,另外一个界面不去要做任何操作。
个人理解:
是服务器向界面发送数据,界面接收,js处理。
模型:
界面1输入(更新)——》Api——》界面2更新
还不够的地方:
1.还没和实体类结合测试
2.没有和数据库结合
3.没有真正的形成API模型
4.没有加密处理
5.没有实现多用户测试
希望朋友们提供解决方案,谢谢了。
程序开发(ASP.NET、C#)、网站建设(H5)、小程序、公众号等相关开发联系QQ:1174787689 备注 程序开发合作