我想在React Native中的应用程序与Java中的服务器之间创建实时数据。我当时试图用WebSocket来做到这一点,但它不适合它。
我是本机反应的新手,所以我没有很多知识。我正在寻找任何说明如何执行该操作的指南或任何示例,我一直在寻找并且没有找到明确的地方。
如果您还有其他选择,如何在我想听到的本机和Java之间进行实时数据
谢谢
答案 0 :(得分:0)
我不是这些主题的专家,但是我正在使用React JS和Java(春季启动)来开发类似功能。最近,我找到了一种使用Stomp和SockJS做到这一点的方法。
这是我的React JS代码
import * as Stomp from 'stompjs';
import * as SockJS from 'sockjs-client';
...
let timeout = 5000;
let timeoutCounter = 0;
const maxTimeoutCounter = 10;
const connect = () => {
const ws = new SockJS("http://localhost:8080/socket");
this.stompClient = Stomp.over(ws);
let that = this;
that.stompClient.connect({}, function(frame) {
that.stompClient.subscribe("/queue/update", (message) => {
const data = JSON.parse(message.body);
// Some code here
});
}, (error) => {
timeoutCounter++;
if (timeoutCounter < maxTimeoutCounter) {
setTimeout(connect, timeoutCounter * timeout);
}
});
}
这是配置Spring Boot的Java代码的一部分:
import java.util.LinkedList;
import java.util.Map;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.Message;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.simp.SimpMessageHeaderAccessor;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.messaging.simp.stomp.StompCommand;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import org.springframework.messaging.support.ChannelInterceptor;
import org.springframework.messaging.support.MessageHeaderAccessor;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry
.addEndpoint("/socket")
.setAllowedOrigins("*")
.withSockJS();
}
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry
.setApplicationDestinationPrefixes("/app")
.enableSimpleBroker("/queue/update");
}
...
}