package demoapcx.baidumapsdk.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import ua.naiksoftware.stomp.Stomp;
import ua.naiksoftware.stomp.StompClient;
import ua.naiksoftware.stomp.dto.StompMessage;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private StompClient mStompClient;
private CompositeDisposable compositeDisposable;
private Gson mGson = new GsonBuilder().create();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mStompClient = Stomp.over(Stomp.ConnectionProvider.OKHTTP, "ws://192.168.103.60:8021"+"/websocket-address/websocket");
resetSubscriptions();
}
/**
* 关闭长链接
* @param view
*/
public void disconnectStomp(View view) {
mStompClient.disconnect();
}
/**
* 开启长链接
* @param view
*/
public void connectStomp(View view) {
mStompClient.withClientHeartbeat(1000).withServerHeartbeat(1000);
resetSubscriptions();
Disposable dispLifecycle = mStompClient.lifecycle()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(lifecycleEvent -> {
switch (lifecycleEvent.getType()) {
case OPENED:
toast("Stomp connection opened");
break;
case ERROR:
Log.e(TAG, "Stomp connection error", lifecycleEvent.getException());
toast("Stomp connection error");
break;
case CLOSED:
toast("Stomp connection closed");
resetSubscriptions();
break;
case FAILED_SERVER_HEARTBEAT:
toast("Stomp failed server heartbeat");
break;
}
});
compositeDisposable.add(dispLifecycle);
// Receive greetings
Disposable dispTopic = mStompClient.topic("/getLampPostAndLightCountByRoad")
//Disposable dispTopic = mStompClient.topic("/topic")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((StompMessage topicMessage) -> {
Log.d(TAG, "Received " + topicMessage.getPayload());
//DataModel response1 = mGson.fromJson(topicMessage.getPayload(), DataModel.class);
//添加你的数据逻辑
}, throwable -> {
Log.e(TAG, "连接错误", throwable);
});
compositeDisposable.add(dispTopic);
mStompClient.connect();
}
/**
* 长链接传递参数
* @param v
*/
public void sendEchoViaStomp(View v) {
// if (!mStompClient.isConnected()) return;
compositeDisposable.add(mStompClient.send("/topic/hello-msg-mapping", "Echo STOMP " )
.unsubscribeOn(Schedulers.newThread())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(() -> {
Log.d(TAG, "STOMP echo send successfully");
}, throwable -> {
Log.e(TAG, "Error send STOMP echo", throwable);
toast(throwable.getMessage());
}));
}
private void toast(String text) {
Toast.makeText(this, text, Toast.LENGTH_SHORT).show();
}
private void resetSubscriptions() {
if (compositeDisposable != null) {
compositeDisposable.dispose();
}
compositeDisposable = new CompositeDisposable();
}
@Override
protected void onDestroy() {
mStompClient.disconnect();
if (compositeDisposable != null) compositeDisposable.dispose();
super.onDestroy();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MyApplication.zip (36个子文件)
MyApplication
gradlew.bat 2KB
gradlew 5KB
gradle.properties 747B
app
proguard-rules.pro 772B
src
test
java
demoapcx
baidumapsdk
myapplication
ExampleUnitTest.java 428B
androidTest
java
demoapcx
baidumapsdk
myapplication
ExampleInstrumentedTest.java 795B
main
res
mipmap-xxxhdpi
ic_launcher.png 9KB
ic_launcher_round.png 15KB
drawable
ic_launcher_background.xml 6KB
mipmap-hdpi
ic_launcher.png 3KB
ic_launcher_round.png 5KB
drawable-v24
ic_launcher_foreground.xml 2KB
values
colors.xml 214B
strings.xml 82B
styles.xml 394B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 6KB
ic_launcher_round.png 10KB
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 3KB
mipmap-xhdpi
ic_launcher.png 4KB
ic_launcher_round.png 7KB
mipmap-anydpi-v26
ic_launcher_round.xml 274B
ic_launcher.xml 274B
layout
activity_main.xml 944B
xml
network_security_config.xml 147B
java
demoapcx
baidumapsdk
myapplication
DataModel.java 605B
MainActivity.java 4KB
AndroidManifest.xml 892B
.gitignore 8B
build.gradle 2KB
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 236B
.gitignore 127B
settings.gradle 16B
build.gradle 617B
共 36 条
- 1
资源评论
shan_zwq
- 粉丝: 72
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- base.apk
- Vue 结合 D3.js 进行数据可视化开发的练手案例.zip
- 语音模块使用说明_jr6001调试工具.html
- 毕业设计-reat18货物运输后台管理系统
- Qt tcp通信(exe)
- tensorflow-gpu-2.7.3-cp39-cp39-manylinux2010-x86-64.whl
- tensorflow-2.8.0-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.4-cp39-cp39-manylinux2010-x86-64.whl
- HTML后台管理系统源49套合集 H5模板源码下载 总有一款适合你 静态页面
- DDColor-PDF文献
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功