美文网首页
安卓开发websocket使用

安卓开发websocket使用

作者: 510bb14393e1 | 来源:发表于2022-05-02 15:57 被阅读0次

1、添加依赖

compile "org.java-websocket:Java-WebSocket:1.3.7"

2、编译MyWebsocket类继承WebSocketServer


import org.java_websocket.WebSocket;
import org.java_websocket.WebSocketImpl;
import org.java_websocket.handshake.ClientHandshake;
import org.java_websocket.server.WebSocketServer;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import android.os.Message;
import android.os.Handler;

public class MyWebSocket extends WebSocketServer {
    
    public MyWebSocket(int port) {
        super(new InetSocketAddress(port));
        
    }
    
    public MyWebSocket(InetSocketAddress address) {
        super(address);
    }

    

    @Override
    public void onOpen(WebSocket webSocket, ClientHandshake clientHandshake) {

       
        System.out.println(webSocket.getRemoteSocketAddress().getAddress().getHostAddress() + " entered the room!");
    }

    @Override
    public void onClose(WebSocket webSocket, int i, String s, boolean b) {
    
        System.out.println(webSocket + " onClose");
    }

    @Override
    public void onMessage(WebSocket webSocket, String s) {
        System.out.println(webSocket + ": " + s);
        //收到消息转发到所有客户端
broadcast(s);
    }

    @Override
    public void onError(WebSocket webSocket, Exception e) {
        e.printStackTrace();
        System.out.println("websocket erro"+e);
        if (webSocket != null) {
            // some errors like port binding failed may not be assignable to a specific websocket
        }
    }

    @Override
    public void onStart() {
        System.out.println("Server started!");
    }
}

3、编写客户端,这里使用javasctipt语言

 var websocket = null;

    //判断当前浏览器是否支持WebSocket
    if ('WebSocket' in window) {
        websocket = new WebSocket("ws://"+window.location.hostname+":8887/websocket");
    }
    else {
        alert('当前浏览器 Not support websocket')
    }

    //连接发生错误的回调方法
    websocket.onerror = function () {
        
    };

    //连接成功建立的回调方法
    websocket.onopen = function () {
        
    };

    //接收到消息的回调方法
    websocket.onmessage = function (event) {
       let str=event.data;
       console.log(str)
       
    }

    //连接关闭的回调方法
    websocket.onclose = function () {
        
    }

    //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
    window.onbeforeunload = function () {
        websocket.close();
        
    }
    
    //发送消息
    function send(msg) {
        websocket.send(msg);
    }
   

4、启动服务

public static void main(String[] args) {
        WebSocketImpl.DEBUG = true;
        try {
            int port = 8887; // 843 flash policy port
            MyWebSocket s = new MyWebSocket(port);
            s.start();
            System.out.println("ChatServer started on port: " + s.getPort());

            BufferedReader sysin = new BufferedReader(new InputStreamReader(System.in));
            while (true) {
                String in = sysin.readLine();
                s.broadcast(in);
                if (in.equals("exit")) {
                    s.stop(1000);
                    break;
                }
                System.out.println(" 客户端数据  "+in);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

相关文章

网友评论

      本文标题:安卓开发websocket使用

      本文链接:https://www.haomeiwen.com/subject/ylhvyrtx.html