Klien SignalR di asp.net

Saya membuat hub server di aplikasi asp.net seperti di bawah ini

public class Calc : Hub
{
    public void CalculateSomething(int a, int b)
    {
        // start working in a new thread
        var task = Task.Factory.StartNew(() => DoCalculate(a, b));

        // attach a continuation task to notify
        // the client when the work is done
        task.ContinueWith(t =>
        {
            System.Threading.Thread.Sleep(2000);
            Clients.addMessage(t.Result);
            Caller.notifyCalculateResult(t.Result);
            System.Threading.Thread.Sleep(2000);
            Caller.notifyCalculateResult("Completed");
            Clients.addMessage("Completed");
        });
    }

    private int DoCalculate(int p1, int p2)
    {
        // do some slow work on the input,
        // e.g. call webservice or I/O.
        int result = p1 + p2;
        //int result = DoSlowWork(p1, p2);
        return result;
    }
}

Sekarang di aplikasi asp.net lain saya membuat klien menggunakan klien SiganlR. Tapi itu tidak berfungsi dengan benar. Saya mencari untuk mendapatkan data dari server saat dikirim ke klien

using System.Threading.Tasks;
using SignalR;
using SignalR.Client;
using SignalR.Client.Hubs;
namespace WebApplication2
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            // Connect to the service
            var hubConnection = new HubConnection("http://localhost:3119/");

            // Create a proxy to the chat service
            var chat = hubConnection.CreateProxy("Calc");

            // Print the message when it comes in
            chat.On("addMessage", message =>Print(message));

            // Start the connection
            hubConnection.Start().Wait();

            // Send a message to the server
            chat.Invoke("CalculateSomething", 1, 2).Wait();
        }

        private async void Print(object message)
        {
            Response.Write(message);
        }
    }
}

Aplikasi klien konsol berfungsi dengan baik. Masalah utamanya adalah dengan asp.net karena gagal menangani panggilan balik dari server.


person Vivek    schedule 19.10.2012    source sumber


Jawaban (1)


Sepertinya Anda salah memanggil metode sisi server, coba ini

chat.Invoke("CalculateSomething", 1, 2).ContinueWith(task =>
{ 
  Console.WriteLine("Value from server {0}", task.Result);
});
person Rafeeq    schedule 23.10.2012