反应本机和java之间的WebSocket

Posted

技术标签:

【中文标题】反应本机和java之间的WebSocket【英文标题】:WebSocket between react native and java 【发布时间】:2018-10-26 10:02:58 【问题描述】:

我有一个 react native 的应用程序,我的服务器是 java (java spring)。

我正在尝试使用 webSocket 获取实时数据,但可以在它们之间进行连接。我正在使用react-native-websocket 进行本机反应,并使用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");
    


如果这不是获取实时数据的方式,我想知道是否有不同的方式

【问题讨论】:

有什么建议吗? 【参考方案1】:

您可以使用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之间的WebSocket的主要内容,如果未能解决你的问题,请参考以下文章

反应本机重新渲染导致视图滚动到顶部-我的键在渲染之间是不是发生变化?

Realm React-Native:从 JS(反应本机代码)和 android(java)访问相同的领域

反应本机 - MainActivity.java

反应导航上的反应本机缺少导航

KeyboardAvoidingView 在本机反应中使用过多的填充来推高内容

反应本机图像获取/上传