springboot-bucket/app-manage-api/README.md
2018-02-26 19:05:53 +08:00

64 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 简介
同时实现了RESTful API接口和WebSocket接口并且都需要授权才能访问授权机制基于Token实现技术是JWT+Shiro
访问RESTful API接口或连接到WebSocket服务之前都需要先调用登录接口拿到Token。
## JWT + Shiro实现接口认证
SpringBoot + JWT + Shiro实现RESTful API的授权访问
## WeSocket长连接
Socket.IO服务器端和客户端使用Java语言实现用于和POS机进行长连接的WebSocket通信。
服务器端可以实时将消息推送给POS端比如机具解绑操作以此来取代机具管理系统中客户端轮询机制。
Sockt.io官网<https://socket.io/>
服务器端使用 [netty-socketio](https://github.com/mrniko/netty-socketio)
客户端使用 [socket.io-client-java](https://github.com/socketio/socket.io-client-java)
### WebSocket js客户端测试
```
com.enzhico.pos.socket.server.ChatLauncher - /client/html/index.html
com.enzhico.pos.socket.server.EventChatLauncher - /client/html/event-index.html
com.enzhico.pos.socket.server.SslChatLauncher - /client/html/ssl-event-index.html
com.enzhico.pos.socket.server.NamespaceChatLauncher - /client/html/namespace-index.html
com.enzhico.pos.socket.server.AckChatLauncher - /client/html/ack-index.html
com.enzhico.pos.socket.server.BinaryEventLauncher - /client/html/binary-event-index.html
```
### WebSocket Java客户端测试
```
服务器:
com.enzhico.pos.socket.server.SocketServer
客户端:
com.enzhico.pos.socket.client.SocketClient
```
### 广播消息中的namespace和room
如果不指定namespace有个默认namespace默认room房间在namespace下面。
netty-socketio服务器端完整实现了所有Socket.IO功能而客户端再浏览器下面表现完美
但是socket.io-client-java只要加上namespace就报错不过它的room广播功能可用。
所以目前的做法是对于每个项目下的APP加入到对应applicationId房间中可实现房间广播。
## JWT + Netty-SocketIO实现WebSocket的授权访问
对于需要进行认证的接口通过JWT的Token方式实现了用户认证访问。
## 运行
该工程和app-manage工程配套请参考app-manage工程的数据库初始化schema.sql
## 许可证
Copyright (c) 2018 Xiong Neng
基于 MIT 协议发布: <http://www.opensource.org/licenses/MIT>