예. 서버에서 클라이언트로 푸시 기능을 구현할 수 있습니다. 클라이언트 측에서 구현되는 WCF 서비스 및 콜백 메소드를 사용하여 각 클라이언트의 인스턴스 컨텍스트 객체를 저장하여 서버에 연결된 클라이언트 목록을 유지하면됩니다. 따라서 모든 클라이언트는 콜백 메소드를 통해 업데이트를 받게됩니다.
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class HostService : IHostService
{
public bool Connect(Guid applicationId)
{
if (!ClientList.ContainsKey(applicationId))
{
IHostServiceCallback client = OperationContext.Current.GetCallbackChannel<IHostServiceCallback>();
ClientList.Add(applicationId, client);
}
}
인터페이스 호스트 서비스 :
[ServiceContract]
public partial interface IHostServiceCallback
{
[OperationContract(IsOneWay = true)]
void SendNotification(string message);
}
: 서비스에 대한
[ServiceContract(CallbackContract = typeof(IHostServiceCallback), SessionMode = SessionMode.Required)]
public partial interface IHostService
{
[OperationContract]
bool Connect(Guid applicationId);
}
콜백 클래스
아래, 고객 목록이 해시 테이블 인 경우처럼 클라이언트의 인스턴스 컨텍스트 객체를 저장할 수 있습니다
서버가 이벤트 처리기에서 알림을 받으면 모든 클라이언트 li로 보내십시오. KE :
private void Notification_Received(object sender, EventReceivedEventArgs e)
{
foreach (IHostServiceCallback client in ClientList.Values)
{
try
{
client.SendNotification(notificationMessage);
}
catch
{
}
}
}
클라이언트 응용 프로그램에서 구현 한 콜백 메소드와 같은 : 클라이언트 소프트웨어가 항상 실행되고 있지 않으면 내가 푸시 알림을하지 않을 것입니다 소프트웨어 업데이트를
public partial class Window1 : Window, IHostServiceCallback
{
public void SendNotification(string message)
{
// do some operation
}
}