向远方客户发送数据:安全可靠
只有一种合理可靠的方法可以将 a 发送signal
给远方的客户。我想确认您最初的假设,即在没有请求的情况下向客户端发送,这在理论上是不可能的,因为设备需要在某个地方打电话并通知代理网关 (SIP) 或其他地址。但是请忽略这一点,因为正确的方法将在这里与源代码一起传递。
安全重要性
重要的是要意识到打开防火墙超出了良好做法。最好遵守防火墙的入站流量锁定规则。以下部分是一种安全方法,可让您以最大的安全性打开出站连接,以防止窥探和其他不安全的安全漏洞。
下载 Android 源库
请参阅此处下载 Android 源库文件的说明:https ://github.com/pubnub/java/tree/master/android
在 Android 上从远处按需接收数据
您需要复制/粘贴以下代码才能快速推进。首先获取此 Java 代码并将其粘贴到您的应用程序中。然后下载库文件。
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// ANDROID PHONE
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Pubnub pubnub = new Pubnub(
"", // PUBLISH_KEY (Optional, supply "" to disable)
"demo", // SUBSCRIBE_KEY (REQUIRED)
"", // SECRET_KEY (Optional, supply "" to disable)
"", // CIPHER_KEY (Optional, supply "" to disable)
true // SSL_ON?
);
Hashtable args = new Hashtable(1);
args.put( "channel", "distant-client-ABC-DEF" );
pubnub.subscribe(args, new Callback() {
public void connectCallback(String channel) {
System.out.println("CONNECT on channel:" + channel);
}
public void disconnectCallback(String channel) {
System.out.println("DISCONNECT on channel:" + channel);
}
public void reconnectCallback(String channel) {
System.out.println("RECONNECT on channel:" + channel);
}
public void successCallback(String channel, Object message) {
System.out.println(channel + " " + message.toString());
}
public void errorCallback(String channel, Object message) {
System.out.println(channel + " " + message.toString());
}
});
按需向远程客户端发送数据
在您的家庭计算机/系统上的 Java VM 上,您可以使用相同的代码将数据安全地发送到远程客户端。使用以下代码执行此操作:
下载 JVM 服务器源库
请参阅此处下载/使用 JVM 服务器源库文件的说明:https ://github.com/pubnub/java/tree/master/java
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// HOME SERVER
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Pubnub pubnub = new Pubnub(
"demo", // PUBLISH_KEY (REQUIRED on Server)
"demo", // SUBSCRIBE_KEY (REQUIRED)
"", // SECRET_KEY (Optional, supply "" to disable)
"", // CIPHER_KEY (Optional, supply "" to disable)
true // SSL_ON?
);
Hashtable args = new Hashtable(1);
args.put( "channel", "distant-client-ABC-DEF" ); // SEND TO CLIENT ABC-DEF
pubnub.publish(args, new Callback() {
public void successCallback(String channel, Object message) {
System.out.println("PUBLISH : " + message);
}
public void errorCallback(String channel, Object message) {
System.out.println("PUBLISH : " + message);
}
});