# autobahn-java
**Repository Path**: hihopeorg/autobahn-java
## Basic Information
- **Project Name**: autobahn-java
- **Description**: No description available
- **Primary Language**: Java
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-02-27
- **Last Updated**: 2022-08-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# autobahn-java
**本项目是基于开源项目autobahn-java进行ohos化的移植和开发的,可以通过项目标签以及github地址(https://github.com/crossbario/autobahn-java
)追踪到原项目版本**
#### 项目介绍
- 项目名称:WebSocket和WAMP协议客户端
- 所属系列:ohos的第三方组件适配移植
- 功能:
1.WebSocket协议:WebSocket层使用基于回调的用户API,专门为ohos编写。例如,它不在主(UI)线程上运行任何网络内容;
2.Web应用程序消息传递协议(WAMP):WAMP层使用Java 8 CompletableFuture进行WAMP操作(调用,注册,发布和订阅),并使用观察者模式处理WAMP会话,订阅和注册生命周期事件;
- 项目移植状态:完成
- 调用差异:无
- 项目作者和维护人:hihope
- 联系方式:hihope@hoperun.com
- 原项目Doc地址:https://github.com/crossbario/autobahn-java
- 原项目基线版本:v20.7.1,sha1:c48c8d125f7eaa4778683e72cd49af14e6a8ba06
- 编程语言:Java
#### 效果展示
#### 安装教程
方法1.
1. 添加har包到lib文件夹内。
2. 在entry的build.gradle内添加如下代码。
```
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har' , '*.so'])
```
3. 编译libsodium,生成libsodium-release.har,放在entry中的libs目录。
方法2.
1. 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址
```
repositories {
maven {
url 'http://106.15.92.248:8081/repository/Releases/'
}
}
```
2. 在应用模块的build.gradle的dependencies闭包中,添加如下代码:
```
dependencies {
implementation 'io.crossbar.autobahn:autobahn-ohos:1.0.1'
implementation 'io.crossbar.autobahn:libsodium:1.0.1'
}
```
#### 使用说明
1. WebSocket on ohos
```
WebSocketConnection connection = new WebSocketConnection();
connection.connect("wss://echo.websocket.org", new WebSocketConnectionHandler() {
@Override
public void onConnect(ConnectionResponse response) {
System.out.println("Connected to server");
}
@Override
public void onOpen() {
connection.sendMessage("Echo with Autobahn");
}
@Override
public void onClose(int code, String reason) {
System.out.println("Connection closed");
}
@Override
public void onMessage(String payload) {
System.out.println("Received message: " + payload);
connection.sendMessage(payload);
}
});
```
2. Show me some code
The code in demo-gallery contains some examples on how to use the autobahn library, it also contains convenience methods to use. Below is a basic set of code examples showing all 4 WAMP actions.
### Subscribe to a topic
```
java
public void demonstrateSubscribe(Session session, SessionDetails details) {
// Subscribe to topic to receive its events.
CompletableFuture subFuture = session.subscribe("com.myapp.hello",
this::onEvent);
subFuture.whenComplete((subscription, throwable) -> {
if (throwable == null) {
// We have successfully subscribed.
System.out.println("Subscribed to topic " + subscription.topic);
} else {
// Something went bad.
throwable.printStackTrace();
}
});
}
private void onEvent(List