java后端代码模拟前端发送websocket请求

怎么调用websocket作为通道发送数据

1.现有多个线程查询不同的设备获取不同的数据。
2.当网页打开后自动产生一个websocket连接。

上面12两点已经完成,但是现在对我来说查询线程和websocket它们相互独立,怎么才能在查询线程中调用websocket的send方法把数据传到前台网页呢。

解决方案:

package com.quantfn.strategy.atrfuture.test;

import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;

import java.net.URI;

public class TestApp {

    public static void main(String[] args) {
        try {
        // 这里用的binance的socket接口,国内调用需要VPN,使用换成你的就行
//            String url = "wss://stream.binance.com:9443/ws/ethbtc@ticker";
//            String url = "wss://stream.binance.com:9443/ws/ethbtc@depth20";
            String url = "wss://stream.binance.com:9443/stream?streams=ethbtc@ticker/ethbtc@depth20/trxbtc@ticker/trxbtc@depth20";
            URI uri = new URI(url);
            WebSocketClient mWs = new WebSocketClient(uri){
                @Override
                public void onOpen(ServerHandshake serverHandshake) {

                }

                @Override
                public void onMessage(String s) {
                    System.out.println(s);
                }

                @Override
                public void onClose(int i, String s, boolean b) {

                }

                @Override
                public void onError(Exception e) {

                }
            };
            mWs.connect();
            System.out.println("haha");
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

package com.yudu.sms.util;

import com.alibaba.fastjson.JSONObject;
import org.java_websocket.WebSocket;
import org.java_websocket.client.WebSocketClient;
import org.java_websocket.handshake.ServerHandshake;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.URI;
import java.net.URISyntaxException;

public class YiWeiDialUtil {
    private static final Logger logger = LoggerFactory.getLogger(YiWeiDialUtil.class);

    public static void dial(String ws, String phone, String recordName) {

        try {
            URI uri = new URI(ws);
            WebSocketClient client = new WebSocketClient(uri) {
                @Override
                public void onOpen(ServerHandshake serverHandshake) { }

                @Override
                public void onMessage(String s) {
                    logger.info("返回的数据:" + s);
                    JSONObject jo = JSONObject.parseObject(s);
                    String dynamicdata = jo.getString("dynamicdata");
                    if (dynamicdata != null) {
                        JSONObject jo_dynamicdata = JSONObject.parseObject(dynamicdata);
                        String realtimestate = jo_dynamicdata.getString("realtimestate");
                        if (realtimestate.equals("outconnected")) {
                            send("{\"command\":\"closeheadsettochannel\"}");
                            String recordMp3 = System.getProperty("user.dir") + "\\src\\main\\resources\\" + recordName + ".mp3";
                            String record = "{\"command\":\"PlayStartRecord\",\"arguments\":{\"content\":\"" + recordMp3 + "\"}}";
                            send(record);
                        }
                    }
                }

                @Override
                public void onClose(int i, String s, boolean b) { }

                @Override
                public void onError(Exception e) {
                    logger.error(e.getMessage());
                }
            };
            //建立连接
            client.connect();

            while (!client.getReadyState().equals(WebSocket.READYSTATE.OPEN)) {
                logger.info("连接中...");
            }
            String dial = "{\"command\":\"Dial\",\"arguments\":{\"phone\":\"" + phone + "\"}}";
            client.send(dial);
        } catch (URISyntaxException e) {
            logger.info(e.getMessage());
        }
    }
}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值