我从服务器调用客户端方法,本质上是一个Javascript确认对话框。如果客户端点击对话框中的Cancel
按钮,我想从本地存储中删除其令牌(基本上将其记录下来)......
sessionStorage.removeItem('access-token');
如果客户端点击OK
按钮,我想在不同的客户端上执行相同操作(我将此客户端的connectionId存储在服务器端)。所以我需要一种方法让服务器知道客户选择哪个选项(OK
或Cancel
)。
我如何选择客户端并将其传回服务器,以便服务器可以在适当的客户端上调用“Logout”Javascript?
答案 0 :(得分:1)
我认为你有几个选择。
用户点击按钮后,您可以将信息发回Hub
。
<强>集线器强>
[HubName("message")]
public class MessageHub : Hub
{
public void sendmessage(bool logout)
{
Clients.Caller(????).logoutuser(logout); //However you identify who to logout??
}
}
<强>客户端强>
var hub = $.connection.message;
hub.client.logoutuser = function(message) {
if (message.logout = true) {
sessionStorage.removeItem('access-token');
}
}
hub.server.sendmessage(true); //result of the user's click OK -> True, Cancel -> False
$.connection.hub.start().done(function () { });
或者您可以点击一个API来获取您想要注销的某些<?em>用户的连接。
<强> API 强>
[RoutePrefix("api/messaging")]
public class MessagingController : ApiController
{
[Route("")]
public void Post(Message message)
{
var notificationHub = GlobalHost.ConnectionManager.GetHubContext<MessageHub>();
if (notificationHub != null)
{
try
{
notificationHub.Clients.User(message.UserName).logoutuser(message);
}
catch (Exception ex)
{
}
}
}
}
<强>客户端强>
function notifyController(responseObj) {
$.ajax({
url: '/api/Messaging/',
type: 'POST',
data: responseObj, // some object containing the users response information?
success: function (data) { return; },
error: function (ex) { return; }
});
}