SignalR jquery sessionstorage

时间:2017-05-30 12:19:13

标签: jquery signalr sessionstorage

我在https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr

的帮助下建立了实时聊天

现在我遇到了这个问题,我无法使用sessionStorage来保存用户名,因此用户每次进入网站上的聊天网站时都不必输入用户名。

这是我第一次使用Web应用程序和sessionStorage。

希望有人可以帮助我:)。

在线观看:http://chat.kibshede.dk/Chat.aspx

我有一个课程: 命名空间SignalRChat {     公共类ChatHub:Hub     {         public void Send(字符串名称,字符串消息)         {             //调用broadcastMessage方法来更新客户端。             Clients.All.broadcastMessage(名称,消息);         }     } }

和Owin课程:

命名空间SignalRChat {     公共课启动     {         public void Configuration(IAppBuilder app)         {             //任何连接或集线器连接和配置都应该放在这里             app.MapSignalR();         }     } }

<!--Reference the autogenerated SignalR hub script. -->
    <script src="signalr/hubs"></script>
    <!--Add script to update the page and send messages.-->
    <script type="text/javascript">
        $(function () {
            // Declare a proxy to reference the hub.
            var chat = $.connection.chatHub;
            // Create a function that the hub can call to broadcast messages.
            chat.client.broadcastMessage = function (name, message) {
                // Html encode display name and message.
                var encodedName = $('<div />').text(name).html();
                var encodedMsg = $('<div />').text(message).html();
                // Add the message to the page.
                $('#discussion').append('<li><strong>' + encodedName
                    + '</strong>:&nbsp;&nbsp;' + encodedMsg + '</li>');
            };

            if (sessionStorage.getItem('UserName') != '#ContentPlaceHolder1_displayname') {
                // Get the user name and store it to prepend to messages.
                var UserName = prompt('Enter your name:', '').toString();
                sessionStorage.setItem('UserName', UserName);
            }



            // Set initial focus to message input box.
            $('#ContentPlaceHolder1_message').focus();

            // Start the connection.
            $.connection.hub.start().done(function () {
                $('#sendmessage').click(function () {
                    // Call the Send method on the hub.
                    chat.server.send(sessionStorage.getItem('UserName'), $('#ContentPlaceHolder1_message').val());
                    // Clear text box and reset focus for next comment.
                    $('#ContentPlaceHolder1_message').val('').focus();
                });
            });
        });
    </script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<asp:Panel ID="Panel_ChatContainer" CssClass="container" runat="server">

        <asp:Panel ID="Panel_ChatContainer_Chat" runat="server">
            <asp:TextBox ID="message" runat="server"></asp:TextBox>
            <input type="button" id="sendmessage" value="Send" />
            <asp:Label ID="displayname" runat="server"></asp:Label>
            <ul id="discussion"></ul>
        </asp:Panel>

    </asp:Panel>

1 个答案:

答案 0 :(得分:0)

您需要将sessionStorage更改为localStorage以保留用户设置的用户名。 sessionStorage数据仅在用户关闭选项卡时保持不变,而localStorage将保持不变。