Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请帮助我理解Java中的Pusher websocket API_Java_Channel_Pusher - Fatal编程技术网

请帮助我理解Java中的Pusher websocket API

请帮助我理解Java中的Pusher websocket API,java,channel,pusher,Java,Channel,Pusher,我想使用推杆Websocket连接使用。我运行了一些基本功能,比如连接到数据服务和接收消息。但是,我很难实现其他功能,比如读取连接状态。也许你可以帮我回答以下几个问题: 1) 启动推送程序并将其连接到服务(pusher.connect())时会发生什么情况?连接的推进器是否在单独的螺纹中运行 2) 如何获取推送器连接的当前状态 3) 如果我的推送程序正在更新其他服务并行使用的对象,这会导致问题吗 4) 如何处理错误/异常?到目前为止,我还没有收到任何错误,是错误看起来像正常的异常,还是处理方式不

我想使用推杆Websocket连接使用。我运行了一些基本功能,比如连接到数据服务和接收消息。但是,我很难实现其他功能,比如读取连接状态。也许你可以帮我回答以下几个问题:

1) 启动推送程序并将其连接到服务(pusher.connect())时会发生什么情况?连接的推进器是否在单独的螺纹中运行

2) 如何获取推送器连接的当前状态

3) 如果我的推送程序正在更新其他服务并行使用的对象,这会导致问题吗

4) 如何处理错误/异常?到目前为止,我还没有收到任何错误,是错误看起来像正常的异常,还是处理方式不同

谢谢

下面我复制了我当前的代码。请注意,底部的while循环仅用于测试,以便代码保持运行

import com.pusher.client.Pusher;
import com.pusher.client.channel.Channel;
import com.pusher.client.channel.ChannelEventListener;
import com.pusher.client.channel.SubscriptionEventListener;
import com.pusher.client.connection.ConnectionEventListener;
import com.pusher.client.connection.ConnectionState;
import com.pusher.client.connection.ConnectionStateChange;


public class Testing {

    public static void main(String[] args) throws Exception {


        // Create a new Pusher instance
        Pusher pusher = new Pusher("PusherKey");

        pusher.connect(new ConnectionEventListener() {

            @Override
            public void onConnectionStateChange(ConnectionStateChange change) {
                System.out.println("State changed to " + change.getCurrentState() +
                                   " from " + change.getPreviousState());
            }

            @Override
            public void onError(String message, String code, Exception e) {
                System.out.println("There was a problem connecting!");
            }
        }, ConnectionState.ALL);

        // Subscribe to a channel
         Channel channel = pusher.subscribe("channel", new ChannelEventListener() {
             @Override
             public void onSubscriptionSucceeded(String channelName) {
                 System.out.println("Subscribed!");
             }

             @Override
             public void onEvent(String channelName, String eventName, String data) {
                 System.out.println("desilo se");
             }
         });

         // Bind to listen for events called "my-event" sent to "my-channel"
         channel.bind("my-event", new SubscriptionEventListener() {
             @Override
             public void onEvent(String channel, String event, String data) {
                 System.out.println("Received event with data: " + data);
             }
         });

        while(true){
            try {
            Thread.sleep(1000);
        } catch(InterruptedException ex) {
            Thread.currentThread().interrupt();
        }
            }

        }
}

}
1) 启动推送程序并将其连接到服务(pusher.connect())时会发生什么情况?连接的推进器是否在单独的螺纹中运行

您可以在以下两个文件中看到线程管理和交互:

  • `
因此,与底层WebSocket连接的交互发生在指定队列(名为
eventQueue
)内

2) 如何获取推送器连接的当前状态

3) 如果我的推送程序正在更新其他服务并行使用的对象,这会导致问题吗

如果您有一个多线程应用程序,您需要自己管理对共享对象的访问

所有与库外代码(您的代码)的交互都在
eventQueue
线程上进行

4) 如何处理错误/异常?到目前为止,我还没有收到任何错误,是错误看起来像正常的异常,还是处理方式不同

在可能和适当的情况下,Pusher Java客户端库将捕获异常,并通过回调(例如
ConnectionEventListener.onError
)将它们提供给您的代码


在发生库未处理的异常的任何情况下,您都会知道,因为IDE会告诉您未处理异常情况/您的代码将无法编译,例如

谢谢,这真的很有帮助。关于问题4),回调是什么样子的,或者我如何处理它?听起来,如果发生了什么事情,回调就会“弹出”。@user3116232我相信您已经找到了JavaDocs。但要回答您的问题,请看这里:
ConnectionState state = pusher.getConnection.getState();