Tôi khá mới đối với SignalR. Nhiệm vụ đầu tiên của tôi là tạo ứng dụng trò chuyện đơn giản.Cách nhận danh sách khách hàng được kết nối trên SignalR
Tôi đã duyệt và đọc và cuối cùng đã tạo một trang mà bạn đến và trò chuyện và nó hoạt động tốt.
Bây giờ tôi cần hiển thị danh sách các khách hàng được kết nối. Để đạt được điều này tôi đã viết đoạn mã sau. Đây là HUB của tôi.
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;
}
}
Và thats it ... Now what ?? Tôi có đi đúng hướng không? Nếu, tôi sau đó làm thế nào để gọi phương pháp này từ xem? Một số gợi ý tốt sẽ thực sự giúp tôi. cổ vũ
EDIT:
Tôi đã thêm đoạn mã sau khi trung tâm bắt đầu
$.connection.hub.start(function() {
chat.getConnectedUsers();
});
Đây là phương pháp mà trả về tên khách hàng trong Hub tôi
public List<ClientModel> GetConnectedUsers()
{
var data = (from k in dc.Users
select new ClientModel()
{
FullName = k.UserName
}).ToList();
Clients.loadUsers(data);
return data;
}
trong firebug tôi có thể thấy nó trả về một cái gì đó như sau;
{"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}
Nhưng, làm cách nào tôi hiển thị trong chế độ xem của mình ??
EDIT:
này nhìn đầy đủ cho đến nay
<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>
Vấn đề: không nhìn thấy bất cứ điều gì ở đây:. $ ('# ClientList') html (data.Result [0] .Họ và tên); firebug nói 'dữ liệu không được định nghĩa'
Xin chào, Cảm ơn bạn đã trả lời. Tôi đã thử chính xác những gì bạn nói. Phương pháp điều khiển của tôi trả về '5' và tôi đã viết mã này để xem của tôi. $ .connection.hub.start (function() {connectedUserCount = chat.getConnectedUsersCount(); $ ('# clientList'). chắp thêm ('
Tôi sẽ cập nhật câu trả lời cho một số điều đó ngay bây giờ – dove
Đối tượng đó là danh sách của bạn.Xem cập nhật để trả lời và có thể chỉ cần thử và bắt đầu với việc gửi lại một poco đơn giản hoặc giá trị trở lại cho khách hàng cho người mới bắt đầu. Phải mất một chút để có được hang của cách này hoạt động. (ps - câu trả lời ban đầu của tôi có hai sai sót trong đó và có thể, vì tôi viết giả này, không chạy nó) – dove