반응형
SignalR에서 특정 클라이언트 호출
모든 클라이언트에 브로드캐스트하지 않고 서버에서 특정 클라이언트를 호출합니다.문제는 내가 Hub 또는 PersistentConnection이 아닌 일부 AJAX 요청(.aspx code backthreet say)의 범위에 있다는 것입니다. 따라서 클라이언트 속성을 갖지 마십시오. 그리고 해당 AJAX(jquery) 호출을 한 클라이언트는 제가 signalr 메시지를 보내고 싶은 클라이언트가 아닙니다!
저는 JS 페이지 로드 시 새로운 클라이언트를 서버 정적 목록에 등록하는 허브를 하나 가지고 있습니다. 그래서 저는 클라이언트 가이드를 가지고 있습니다.그러나 서버에서 특정 클라이언트로 메시지를 보내는 방법을 알지 못합니다.
$('#sendmessage').click(function () {
// Call the Send method on the hub.
chat.server.send($('#displayname').val(), $('#message').val(), $.connection.hub.id);
// Clear text box and reset focus for next comment.
$('#message').val('').focus();
});
서버 측에서 클라이언트의 ID와 해당 ID에 대한 응답을 보냅니다.
public void Send ( string name , string message , string connID )
{
Clients.Client(connID).broadcastMessage(name , message);
}
허브 서버로 요청을 보낼 때마다 요청의 연결 ID가 다르기 때문에 지속적으로 변경되지 않는 사용자 이름과 신호 r의 연결 ID가 포함된 정적 해시 테이블을 추가했습니다. 연결할 때마다 연결 ID가 업데이트됩니다.
$.connection.hub.start().done(function () {
chat.server.registerConId($('#displayname').val());
});
및 서버 코드:
public class ChatHub : Hub
{
private static Hashtable htUsers_ConIds = new Hashtable(20);
public void registerConId(string userID)
{
if(htUsers_ConIds.ContainsKey(userID))
htUsers_ConIds[userID] = Context.ConnectionId;
else
htUsers_ConIds.Add(userID, Context.ConnectionId);
}
}
특정 ID로 메시지를 보내고 싶을 때
Clients.Client(Context.ConnectionId).onMessage(
new Message{From = e.Message.From, Body = e.Message.Body}
);
특정 사용자가 실제로 호출자인 경우 다음을 사용할 수 있습니다.
Clients.Caller.myJavaScriptClientFunction();
언급URL : https://stackoverflow.com/questions/7872589/call-specific-client-from-signalr
반응형
'programing' 카테고리의 다른 글
Oracle SQL에서 1시간 추가 (0) | 2023.06.11 |
---|---|
Wordpress 페이지 URL이 잘못된 페이지로 이동합니다. (0) | 2023.06.11 |
목록의 각 요소를 int로 어떻게 나누나요? (0) | 2023.06.11 |
플라스크 SQL 화학 쿼리, 열 이름 지정 (0) | 2023.06.11 |
GoDaddy의 TXT 레코드를 검증하지 않는 파이어베이스 호스팅 (0) | 2023.06.11 |