Saya cukup baru mengenal SignalR. Tugas pertama saya adalah membuat aplikasi chatting sederhana.
Saya telah menjelajah dan membaca dan akhirnya membuat halaman tempat Anda datang dan mengobrol dan berfungsi dengan baik.
Sekarang saya perlu menampilkan daftar klien yang terhubung. Untuk mencapai ini saya telah menulis kode berikut. Ini adalah HUB saya.
public class ChatHub: Hub
{
chatEntities dc = new chatEntities();
public void Send(string message,string clientName)
{
Clients.addMessage(message,clientName);
}
// I want to save the user into my database, when they join
public void Joined(string userId,string userName)
{
CurrentChattingUsers cu = new CurrentChattingUsers();
cu.ConnectionId = userId;
cu.UserName = userName;
dc.CurrentChattingUsers.AddObject(cu);
dc.SaveChanges();
Clients.joins(userId, userName);
}
// This will return a list of connected user from my db table.
public List<ClientModel> GetConnectedUsers()
{
var query = (from k in dc.CurrentChattingUsers
select new ClientModel()
{
FullName = k.UserName,
UserId = k.ConnectionId
}).ToList();
return query;
}
}
Dan itu saja...Sekarang bagaimana?? Apakah saya menuju ke arah yang benar? Jika, lalu bagaimana memanggil metode ini dari tampilan? Beberapa saran bagus akan sangat membantu saya. bersulang
EDIT:
Saya telah menambahkan skrip berikut ketika hub dimulai
$.connection.hub.start(function () {
chat.getConnectedUsers();
});
Ini adalah metode yang mengembalikan nama klien di Hub saya
public List<ClientModel> GetConnectedUsers()
{
var data = (from k in dc.Users
select new ClientModel()
{
FullName = k.UserName
}).ToList();
Clients.loadUsers(data);
return data;
}
di pembakar saya dapat melihatnya mengembalikan sesuatu sebagai berikut;
{"State":{},"Result":[{"FullName":"mokarom","UserId":null}, {"FullName":"aka8000","UserId":null},{"FullName":"johnnyno5","UserId":null},{"FullName":"reza","UserId":null},{"FullName":"amyo","UserId":null},{"FullName":"rezatech","UserId":null}],"Id":"0","Error":null,"StackTrace":null}
Tapi, bagaimana saya menampilkannya dalam pandangan saya??
EDIT:
ini tampilan lengkap sejauh ini
<script type="text/javascript">
var chat;
var myClientName
$(document).ready(function(){
myClientName = '@Request.Cookies["ChatterName"].Value';
// Created proxy
chat = $.connection.chatHub;
// Assign a function to be called by the server
chat.addMessage = onAddMessage;
// Register a function with the button click
$("#broadcast").click(onBroadcast);
$('#message').keydown(function (e) {
if (e.which == 13) { //Enter
e.preventDefault();
onBroadcast();
}
});
// Start the connection
$.connection.hub.start(function () {
chat.getConnectedUsers();
});
chat.loadUsers = function (data) {
loadUsers(data);
};
});
function onAddMessage(message,clientName) {
// Add the message to the list
$('#messages').append('<div class="chatterName">' + clientName + ' </div><div class="chatterMessage"> ' + message + '</div><div class="clear">');
}
function onBroadcast() {
// Call the chat method on the server
chat.send($('#message').val(), myClientName);
$('#message').val('');
}
function loadUsers(data) {
$('#clientList').html(data.Result[0].FullName);
}
</script>
Masalah: tidak melihat apa pun di sini: $('#clientList').html(data.Result[0].FullName); pembakar mengatakan 'data tidak ditentukan'