试试看 Cloudopt Next 吧:
https://github.com/cloudoptlab/cloudopt-nextCloudopt Next 是一个非常轻量级且现代的、基于 Kotlin 编写的全栈开发框架,同时支持 Java 和 Kotlin,您可以处理 Url 的解析,数据的封装,Json 的输出等等,从根本上减少开发时间、提升开发体验。
[Cloudopt Next](
https://next.cloudopt.net/) 是一个非常轻量级且现代的、基于 Kotlin 编写的全栈开发框架,同时支持 Java 和 Kotlin,您可以处理 Url 的解析,数据的封装,Json 的输出等等,从根本上减少开发时间、提升开发体验。
** Cloudopt Next 主要拥有以下特点:**
> **简单** 极简设计,几乎不要任何配置,不依赖 Tomcat 、Jetty 等 Web 容器。
> **异步** 基于 vertx 轻松实现高性能的异步服务。
> **扩展** 支持 vertx 体系的各种组件,同时支持通过插件扩展功能,官方也提供了大量好用的插件。
> **中文** 全中文文档、中文社区,帮助中文开发者快速上手。
**GitHub:**
https://github.com/cloudoptlab/cloudopt-next**开源中国:**
https://gitee.com/cloudopt/cloudopt-next## 示例
您可以通过访问[Cloudopt Next 的官网](
https://next.cloudopt.net)来查看文档,也可以前往[Example](
https://github.com/cloudoptlab/cloudopt-next-example)查看简单的示例。### 路由
让我们来看看一个简单的基于 Cloudopt Next 的路由:
```kotlin
@
API("/")
class IndexController : Resource() {
@
GET fun get(){
renderHtml(view = "index")
}
}
```
```java
@
API(value = "/")
public class IndexController extends Resource {
@
GET public void get(){
View v = new View();
v.setView("index");
renderHtml(v);
}
}
```
### 启动
```kotlin
fun main(args: Array<String>) {
NextServer.run()
}
```
```java
public static void main(String args[]) {
NextServer.run();
}
```
### 超好用的协程
```kotlin
var value = await<String>{handler->
handler.complete(RedisManager.sync().get("key"))
}
```
###
### WebSocket
```kotlin
@
WebSocket("/websocket")
class WebSocketHandler : WebSocketResource {
override suspend fun onConnectionSuccess(websocket: ServerWebSocket) {
websocket.writeTextMessage("Connection successful!") {
println("The event of after write.")
}
val buffer: Buffer = Buffer.buffer().appendInt(123).appendFloat(1.23f)
websocket.writeBinaryMessage(buffer) {
println("The event of after write binary.")
}
}
override suspend fun onConnectionFailure(throwable: Throwable) {
}
override suspend fun onConnectionComplete(websocket: ServerWebSocket) {
}
override suspend fun onFrameMessage(frame: WebSocketFrame, websocket: ServerWebSocket) {
}
override suspend fun onTextMessage(message: String, websocket: ServerWebSocket) {
println(message)
websocket.writeTextMessage("This is the message from the server!")
}
override suspend fun onBinaryMessage(buffer: Buffer, websocket: ServerWebSocket) {
}
override suspend fun onPong(buffer: Buffer, websocket: ServerWebSocket) {
}
override suspend fun onException(throwable: Throwable, websocket: ServerWebSocket) {
throwable.printStackTrace()
if (!websocket.isClosed) {
websocket.close()
}
}
override suspend fun onDrain(websocket: ServerWebSocket) {
}
override suspend fun onEnd(websocket: ServerWebSocket) {
println("Connection was closed.")
}
}
```
### SockJS
```kotlin
@
SocketJS("/socket/api/*")
class SocketController : SocketJSResource {
override fun handler(userSocketConnection: SockJSSocket) {
println(userSocketConnection)
userSocketConnection.handler {message->
println(message)
userSocketConnection.write("Hello world!")
}
}
}
```
### 插件
```kotlin
fun main(args: Array<String>) {
NextServer.addPlugin(TestPlugin())
NextServer.addPlugin(EventPlugin())
NextServer.run()
}
```