Websocket客户端实现平台数据-后端-前端数据传输 wss协议

WebSocketClientAbs

import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
import org.apache.http.ssl.SSLContexts;
import org.java_websocket.client.WebSocketClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyStore;
import java.util.Map;

public abstract class WebSocketClientAbs {


    @Value("${server.ssl.key-store}")
    private String cerPath;

    @Value("${server.ssl.key-store-password}")
    private String cerPwd;

    /**
     * 创建WebSocket客户端
     *
     * @param wsUri
     * @param httpHeaders
     * @return
     */
    public abstract WebSocketClient createWebSocketClient(String wsUri, Map<String, String> httpHeaders);

    /**
     * 客户端连接
     *
     * @param uri
     * @param httpHeaders
     * @return
     */
    public abstract WebSocketClient connect(String uri, Map<String, String> httpHeaders);

    /**
     * wss协议证书认证
     *
     * @param webSocketClient
     */
    public void createWebSocketClient(WebSocketClient webSocketClient) {
        try {
            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
            keyStore.load(resourceLoader(cerPath), cerPwd.toCharArray());
            SSLContext sslContext = SSLContexts.custom()
                    .loadTrustMaterial(keyStore, new TrustSelfSignedStrategy()).build();
            SSLSocketFactory sslFactory = sslContext.getSocketFactory();
            webSocketClient.setSocketFactory(sslFactory);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 读取文件信息
     *
     * @param fileFullPath
     * @return
     * @throws IOException
     */
    public InputStream resourceLoader(String fileFullPath) throws IOException {
        ResourceLoader resourceLoader = new DefaultResourceLoader();
        return resourceLoader.getResource(fileFullPath).getInputStream();
    }

}
PlatformWebsocketClient:平台客户端

import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Map;


@Component
@Slf4j
@Data
public class PlatformWebsocketClient extends WebSocketClientAbs {


    @Resource
    private MessageService messageService;
    private WebSocketClient wsClient;

    // 消息类型
    private String type;

    // 0:链接断开或者异常;1:代表链接中;2:代表正在连接;
    public static int isConnect = 0;

    /**
     * 获取客户端连接实例
     *
     * @param wsUri
     * @param httpHeaders
     * @return
     */
    @Override
    public WebSocketClient createWebSocketClient(String wsUri, Map<String, String> httpHeaders) {

        try {
            //创建客户端连接对象
            return new WebSocketClient(new URI(wsUri), httpHeaders) {

                /**
                 * 建立连接调用
                 * @param serverHandshake
                 */
                @Override
                public void onOpen(ServerHandshake serverHandshake) {
                    isConnect = 1;
                }

                /**
             
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值