Oldukça yeni. İlk görevim basit bir sohbet uygulaması yapmaktır.Bağlantılı istemcilerin bir listesini nasıl alırsınız? SignalR
Tarama ve okuma yaptım ve nihayet gelip sohbet ettiğiniz bir sayfa oluşturduk ve iyi çalışıyor.
Şimdi bağlı istemcilerin listesini göstermem gerekiyor. Bunu başarmak için aşağıdaki kodu yazdım. Bu benim HUB'ım.
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;
}
}
Ve işte bu ... Şimdi ne? Doğru yöne gidiyorum? Öyleyse, bu yöntemleri bu görünümden nasıl ararım? Bazı iyi öneriler gerçekten bana yardımcı olacaktır. şerefe
DÜZENLEME: göbek Bu benim Hub istemci adlarını döndürür yöntemdir
$.connection.hub.start(function() {
chat.getConnectedUsers();
});
başlattığınızda aşağıdaki senaryoyu eklemiş
public List<ClientModel> GetConnectedUsers()
{
var data = (from k in dc.Users
select new ClientModel()
{
FullName = k.UserName
}).ToList();
Clients.loadUsers(data);
return data;
}
Firebug'da görebiliyorum ki bir şey şu şekilde döndürür;
{"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}
Ancak, bunu nasıl görüntüleyebilirim?
DÜZENLEME:
bu tam görünüm şimdiye kadar
<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>
Sorun: burada bir şey görmüyorum. $ ('# ClientList') html (data.Result [0] .Ad Soyad); firebug
Merhaba, Cevabınız için teşekkürler. Tam olarak ne söylediğini denedim. Denetleyici yöntemim '5' i döndürür ve bu kodu benim görüşüme yazdım. $ .connection.hub.start (function() {connectedUserCount = chat.getConnectedUsersCount(); $ ('# clientList'). ekleyin ('
Bazılarının cevabını şimdi güncelleyeceğim – dove
Bu nesne listenizdir.Cevaplamak için güncellemeye bakın ve belki de sadece başlangıçlar için müşteriye basit bir poco veya değer geri göndermeyi deneyin. Bu, çalışma şeklinin asılmasını sağlamak için biraz zaman alır. (ps - orjinal cevabımda iki kusur vardı ve belki de, bunu yazarken, bunu çalıştırmama rağmen) – dove