【问题标题】:SignalR java client can't invoke method and send dataSignalR java客户端无法调用方法和发送数据
【发布时间】:2018-01-10 09:26:42
【问题描述】:

我使用以下代码创建了一个基本的自托管 SignalR 服务器:

    class Program
    {
        static void Main(string[] args)
        {
            // This will *ONLY* bind to localhost, if you want to bind to all addresses
            // use http://*:8080 to bind to all addresses. 
            // See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx 
            // for more information.
            string url = "http://localhost:8080";
            using (WebApp.Start(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
    }
    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
            app.MapSignalR();
        }
    }
    public class MyHub : Hub
    {
        public void Send(string name, string message)
        {
            Clients.All.addMessage(name, message);
        }
    }

取自:https://docs.microsoft.com/en-us/aspnet/signalr/overview/deployment/tutorial-signalr-self-host 并与 Javascript 客户端一起使用。

我现在正在尝试创建一个 Java 客户端并得到以下代码,它只是应该向服务器发送消息:

       String host = "http://localhost:8080";

        HubConnection connection = new HubConnection(host);

        HubProxy proxy = connection.createHubProxy("MyHub");

        connection.start();

        try {
            System.out.println("Sendng message...");
            proxy.invoke( "Send", "Client", "Hello world!" ).get();
            System.out.println("Message sent!");
        } catch (InterruptedException e) {
            System.out.println("err1");
            // Handle ...
        } catch (ExecutionException e) {
            System.out.println("err2");
            // Handle ...
        }

我遇到的问题是服务器没有收到消息,似乎代码卡在调用调用中并且没有打印Hello world! 消息。有人知道我做错了什么吗?

【问题讨论】:

  • SignalR 已经有一个 Java 客户端 - github.com/SignalR/java-client 。你可以用它来代替吗?
  • @ADyson 嗯,你指的是哪一个,因为我只能看到测试文件?
  • @ADyson 我已经在项目中导入了java文件,是否需要创建一个jar文件?如果我问一些简单的问题,我对 java 和全新的信号器不太擅长。
  • 我不知道,抱歉,我已经有 15 年没有成为 Java 开发人员了...由于 asp.net 标签,我的提要中出现了这个问题。我只是做了一个快速的谷歌,并认为你可以进一步调查。我以为他们指的是存储库中已经存在的文件,但是是的,也许您必须构建它。

标签: java c# asp.net signalr signalr-hub


【解决方案1】:
hubProxy.invoke("sendMessageByUser", Message, WebApiToken).done(new Action<Void>() {
        @Override
        public void run(Void aVoid) {


            if (aVoid != null)

                handler.post(new Runnable() {
                    @Override
                    public void run() {

                        Toast.makeText(MyApplicationService.this, "Mesaj gönderildi", Toast.LENGTH_SHORT).show();


                    }
                });


        }
    }).onError(new ErrorCallback() {
        @Override
        public void onError(final Throwable error) {


            handler.post(new Runnable() {
                @Override
                public void run() {

                    Toast.makeText(MyApplicationService.this.getApplicationContext(), "Bir hata oluştu" + error.toString(), Toast.LENGTH_SHORT).show();

                }
            });


        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多