java - React Native 和 Java 之间的 WebSocket

标签 java spring reactjs react-native websocket

我有一个使用 React Native 的应用程序,我的服务器使用 Java (Java Spring)。

我正在尝试使用 webSocket 获取实时数据,但可以在它们之间进行连接。我正在使用 react-native-websocket对于 native react 和 messaging-stomp-websocket用于 java spring 中的服务器。

我无法在它们之间建立联系。

来自 React Native 的代码:

<WS ref={ref=> {this.ws = ref}}
    url="ws://echo.websocket.org/"
    onOpen={() => {
    console.log('Open!')
    //this.ws.send('Hello')
    }}
    onMessage={(msg)=>{console.log('Message!',msg)}}
    onError={(err)=>{console.log('Error websocket!',err)}}
    onClose={(close)=>{console.log('Close!',close)}}
    reconnect // Will try to reconnect onClose
/>

来自服务器的代码:

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/gs-guide-websocket").setAllowedOrigins("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        //the client subscribe (listen) to /dispenser
        config.enableSimpleBroker("/dispenser");
        //perfix for the client. it should be on the client /app/{MessageMapping variable}
        config.setApplicationDestinationPrefixes("/app");
    }

}

如果这不是处理实时数据的方法,我想知道是否有不同的方法

最佳答案

您可以使用 sockjs-clientstompjs .

导入它们

import SockJS from 'sockjs-client';
import Stomp from 'stompjs';

您必须执行以下行并订阅该路径。

    //your end point here
    var sock = new SockJS('http://localhost:8102/api/ws');
let stompClient = Stomp.over(sock);
sock.onopen = function() {
  console.log('open');
}
stompClient.connect({}, function (frame) {
   console.log('Connected: ' + frame);
   //subscribing path
   stompClient.subscribe('/topic/public', function (greeting) {
     console.log(greeting);
     //you can execute any function here
   });
});

当你想发送消息时

stompClient.send("/app/sendMessage", {},"your message here");

关于java - React Native 和 Java 之间的 WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53006225/

相关文章:

reactjs - Bootstrap 下拉菜单不适用于 React 路由器

javascript - 使用 useEffect 更新 useReducer 'state'

reactjs - 如何在react-virtualized List中设置动态行高?

java - 代号一 : Setting Timeline as background image

c# - 为什么数组大小声明使用 "1"作为第一个索引?

java - 将外部资源文件夹添加到 Spring Boot

spring - 如何设置 Spring Security SecurityContextHolder 策略?

java - GAE : How to map object oriented designs into Appengine datastore efficiently

java - 使用 BufferedReader 时如何避免 NumberFormatException?

java - Spring 启动 : Wrapping JSON response in dynamic parent objects