Bagaimana cara mendapatkan string dengan sesi http dalam javascript?

Saya membuat aplikasi chat di web api ASP-NET dengan C# di VS Code. Registrasi pengguna dan login berfungsi dengan database. Saya menambahkan kode contoh SignalR ke halaman Selamat Datang, tetapi saya ingin memodifikasi: Nama pengguna harus berupa nama pengguna yang dicatat, dan setelah itu ketika saya mengklik ''Kirim Pesan'', harus terlihat seperti ini: ''acc1 mengatakan halo dunia''.

SCREENSHOT TENTANG HALAMAN SAYA

masukkan deskripsi gambar di sini Fungsi tombol ''Kirim Pesan'' ada di file ''chat.js'', dan saya tidak tahu, bagaimana cara mendapatkan string ''nama pengguna" disana HttpContext.Session.GetString("username") tidak berfungsi dalam javascript.

chat.js

"use strict";

var connection = new signalR.HubConnectionBuilder().withUrl("/chatHub").build();

//Disable send button until connection is established
document.getElementById("sendButton").disabled = true;



connection.on("ReceiveMessage", function (user, message) {
    var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    var encodedMsg = user + " says " + msg;
    var li = document.createElement("li");
    li.textContent = encodedMsg;
    document.getElementById("messagesList").appendChild(li);
});

connection.start().then(function () {
    document.getElementById("sendButton").disabled = false;
}).catch(function (err) {
    return console.error(err.toString());
});

document.getElementById("sendButton").addEventListener("click", function (event) {
    var user = document.getElementById("userInput").value;
    var message = document.getElementById("messageInput").value;
    connection.invoke("SendMessage", user, message).catch(function (err) {
        return console.error(err.toString());
    });
    event.preventDefault();
});

Wilcome.cshtml

@page
@model probagetrequest.Pages.WilcomeModel
@using Microsoft.AspNetCore.Http

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Wilcome</title>
</head>
<body>

    Welcome @HttpContext.Session.GetString("username")
    <br>
    <br>
    <a asp-page="index" asp-page-handler="logout">Logout</a>
    <a asp-page="profile">Change Profile</a>

    <div class="container">
        <div class="row">&nbsp;</div>
        <div class="row">
            <div class="col-2">User</div>
            <div class="col-4"><input type="text" id="userInput" /></div>
        </div>
        <div class="row">
            <div class="col-2">Message</div>
            <div class="col-4"><input type="text" id="messageInput" /></div>
        </div>
        <div class="row">&nbsp;</div>
        <div class="row">
            <div class="col-6">
                <input type="button" id="sendButton" value="Send Message" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-12">
            <hr />
        </div>
    </div>
    <div class="row">
        <div class="col-6">
            <ul id="messagesList"></ul>
        </div>
    </div>

    <script src="~/js/signalr/dist/browser/signalr.js"></script>
    <script src="~/js/chat.js"></script>

</body>
</html>

ChatHub.cs

using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;
using System;

namespace SignalRChat.Hubs
{
    public class ChatHub : Hub
    {
        public async Task SendMessage(string user, string message)
        {
            Console.WriteLine($"user={user}, message={message}");
            await Clients.All.SendAsync("ReceiveMessage", user, message);
        }
    }
}


person szaszagado    schedule 22.04.2020    source sumber


Jawaban (1)


Anda dapat menggunakan var user = '@HttpContext.Session.GetString("username")'; dan menggunakan objek pengguna sesuai keinginan Anda.

Jika skrip Anda dalam file terpisah, Anda dapat menetapkan sebagai objek window dan digunakan dalam file js Anda.

window.user = '@HttpContext.Session.GetString("username")';

<script>
   var user = '@HttpContext.Session.GetString("username")'; //or window.user
   console.log(user)
</script>
person Hien Nguyen    schedule 22.04.2020