SignalR jquery会话存储
我已经建立了一个livechat,有来自 现在我有一个问题,我不能使用sessionStorage来保存用户名,因此用户不必每次进入网站上的聊天网站时都键入用户名 这是我第一次使用web应用程序和会话存储 希望有人能帮我:) 联机查看: 我有一门课,里面有: 名称空间信号呼叫 { 公共类聊天室:聊天室 { 公共无效发送(字符串名称、字符串消息) { //调用broadcastMessage方法来更新客户端。 Clients.All.broadcastMessage(名称、消息); } } } 和一个Owin课程,包括: 名称空间信号呼叫 { 公营创业 { 公共无效配置(IAppBuilder应用程序) { //任何连接或集线器接线和配置都应位于此处 app.mapsigner(); } } }SignalR jquery会话存储,jquery,signalr,sessionstorage,Jquery,Signalr,Sessionstorage,我已经建立了一个livechat,有来自 现在我有一个问题,我不能使用sessionStorage来保存用户名,因此用户不必每次进入网站上的聊天网站时都键入用户名 这是我第一次使用web应用程序和会话存储 希望有人能帮我:) 联机查看: 我有一门课,里面有: 名称空间信号呼叫 { 公共类聊天室:聊天室 { 公共无效发送(字符串名称、字符串消息) { //调用broadcastMessage方法来更新客户端。 Clients.All.broadcastMessage(名称、消息); } } } 和
$(函数(){
//声明代理以引用中心。
var chat=$.connection.chatHub;
//创建一个中心可以调用以广播消息的函数。
chat.client.broadcastMessage=函数(名称、消息){
//Html编码显示名称和消息。
var encodedName=$('').text(name).html();
var encodedMsg=$('').text(message.html();
//将消息添加到页面。
$(“#讨论”)。追加(“”+encodedName
+“:”+encodedMsg+” );
};
if(sessionStorage.getItem('UserName')!='#ContentPlaceHolder1_displayname')){
//获取用户名并将其存储到消息前。
var UserName=prompt('输入您的姓名:','').toString();
setItem('UserName',UserName);
}
//将初始焦点设置为消息输入框。
$(“#内容占位符1_消息”).focus();
//启动连接。
$.connection.hub.start().done(函数(){
$('#sendmessage')。单击(函数(){
//在集线器上调用Send方法。
send(sessionStorage.getItem('UserName'),$('ContentPlaceHolder1_message').val());
//清除文本框并重置下一条注释的焦点。
$('#ContentPlaceHolder1_message').val(''.focus();
});
});
});
您需要将sessionStorage更改为localStorage,以保留用户设置的用户名。会话存储数据仅在用户关闭选项卡之前持续存在,而本地存储将持续存在 您的用户必须登录到您的站点吗?如果是这样,您可以使用他们现有的会话cookie。我不使用login:,但我不能使用sessionstorage保存用户名吗?我在登录中使用session anyways您可以保存他们在任何对象中输入的内容,以便为您的用户记录会话id,但如果您需要,这样他们就不必在每次导航到您的站点时输入用户名,您需要一些在用户端持久存在的内容。你应该在覆盖OnConnect/OnDisconnect的代码中加一个断点,看看你在应用程序中导航时调用它们的频率。我让ben尝试将用户名保存在sessionstorage中,并做了一个“如果”,但由于某种原因,会话或其他地方无法使用if(sessionstorage.getItem('username'))!='#ContentPlaceHolder1_displayname'){var UserName=prompt('Enter your name:','').toString();sessionStorage.setItem('UserName',UserName);}很抱歉我完全错过了。我编辑了我的答案。