Android搭建HTTP和WebSocket的服务器端
16lz
2021-01-23
Android服务器搭建
- Android服务器搭建
- AndServer搭建HTTP服务器
- 配置依赖
- 创建服务器
- 举例展示
- Java-WebSocket搭建WebSocket
- 配置依赖
- 创建服务器
- 举例展示
Android服务器搭建
搭建Android服务器,是有一定需求的。当需要一定数据传输时,如果额外搭建服务器,会造成一定的开发成本问题和数据延迟问题。这时如果搭建一个Android平台服务器,可以很好的解决此问题。
这里主要介绍一下如何搭建Android的服务器实现HTTP和WebSocket。其中介绍AndServe搭建HTTP服务器和Java-WebSocket搭建WebSocket服务器端。
AndServer搭建HTTP服务器
官方文档:https://yanzhenjie.com/AndServer/,使用介绍和举例非常丰富,开发时很有帮助。
官方代码:https://github.com/yanzhenjie/AndServer,可以阅读源码,demo也很简洁丰富。
AndServer是Android平台的Web Server和Web Framework。 它基于编译时注解提供了类似SpringMVC的注解和功能,如果您熟悉SpringMVC,则可以非常快速地掌握它。
配置依赖
implementation 'com.yanzhenjie.andserver:api:2.0.5' annotationProcessor 'com.yanzhenjie.andserver:processor:2.0.5'
创建服务器
- 创建服务器
Server mServer = AndServer.serverBuilder(this) .inetAddress(NetUtils.getLocalIPAddress())//指定Ip地址 .port(PORT) .timeout(10, TimeUnit.SECONDS) .listener(new Server.ServerListener() { @Override public void onStarted() { } @Override public void onStopped() { } @Override public void onException(Exception e) { } }) .build();
- 启动服务器
private void startServer() { if (!mServer.isRunning()) { mServer.startup();//启动 } }
- 退出服务器
private void stopServer() { mServer.shutdown();//退出 }
举例展示
注意,GitHub上作者有丰富举例,可以更好学习,我简单写一个。
- 配置网址路径等等
package com.peanut.myapplication.http.component;import android.content.Context;import com.yanzhenjie.andserver.annotation.Config;import com.yanzhenjie.andserver.framework.config.Multipart;import com.yanzhenjie.andserver.framework.config.WebConfig;import com.yanzhenjie.andserver.framework.website.AssetsWebsite;import java.io.File;@Configpublic class AppConfig implements WebConfig { @Override public void onConfig(Context context, Delegate delegate) { delegate.addWebsite(new AssetsWebsite(context, "/web")); delegate.setMultipart(Multipart.newBuilder() .allFileMaxSize(1024 * 1024 * 20) // 20M .fileMaxSize(1024 * 1024 * 5) // 5M .maxInMemorySize(1024 * 10) // 1024 * 10 bytes .uploadTempDir(new File(context.getCacheDir(), "_server_upload_cache_")) .build()); }}
2. 访问登录界面
package com.peanut.myapplication.http.controller;import com.yanzhenjie.andserver.annotation.Controller;import com.yanzhenjie.andserver.annotation.GetMapping;@Controllerpublic class PageController { @GetMapping(path = "/") public String index() { return "forward:/index.html";//访问项目路径下网页 }}
Java-WebSocket搭建WebSocket
配置依赖
implementation "org.java-websocket:Java-WebSocket:1.3.6"
创建服务器
- 创建服务器
继承WebSocketServer,传入端口
import org.java_websocket.WebSocket;import org.java_websocket.handshake.ClientHandshake;import org.java_websocket.server.WebSocketServer;import java.net.InetSocketAddress;public class TestServer extends WebSocketServer { private TestServer serverSocket; private static final String TAG = "TestServer"; public TestServer(int port) { super(new InetSocketAddress(port)); } @Override public void onOpen(WebSocket conn, ClientHandshake handshake) { //开始连接 } @Override public void onClose(WebSocket conn, int code, String reason, boolean remote) { //服务器关闭 } @Override public void onMessage(WebSocket conn, String message) { //接收消息,做逻辑处理,这里我直接重新返回消息 sendMessage(conn, message); } @Override public void onError(WebSocket conn, Exception ex) { //异常 } @Override public void onStart() { }}
- 启动服务器
public void start(int port) { serverSocket = new TestServer(port); serverSocket.start(); }
- 停止服务器
public void stop() { serverSocket.stop(); }
- 发送消息
public void sendMessage(WebSocket socket, String message) { socket.send(message); }
举例展示
在线测试工具.
更多相关文章
- Android 注解基本使用
- Android SDK Document 框架导读的翻译和注解[1]
- Android作为客户端,采用Netty与服务器通信
- android > ImageView 加载本地/服务器图片
- Android客户端解析web服务器XML数据小问题
- android与tomcat服务器交互实例
- Android Tcp服务器端
- android上传文件到服务器