我有一个使用 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-client和 stompjs .
导入它们
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/