2017-05-01 8 views
15

नीचे मेरा प्रतिक्रिया मूल घटक और नोड server.js कोड है जो मैं अपने नोड websocket बैकएंड से कनेक्ट करने का प्रयास कर रहा हूं।प्रतिक्रिया मूल और socket.io नोड काम नहीं कर रहा

मेरा प्रतिक्रिया कोड सर्वर के समान कंप्यूटर पर चल रहा है। मुझे यहां इतने सारे अलग-अलग उत्तर मिल गए हैं, और जिथूब, जिनमें से कोई भी मैं काम नहीं कर सकता।

मैं भी इस question जो जवाब कभी नहीं गई थी, और this question एक जवाब है, जो मैं काम कर रहा हो (एक साल पहले कहा गया था) नहीं कर सकते

मैं this article मिल गया है और इन के आधार पर मेरे कोड में संशोधन करने की कोशिश की है है दिशानिर्देश लेकिन यह काम नहीं किया।

कोड प्रतिक्रिया

import React from 'react'; 
import { StyleSheet, Text, View, Image } from 'react-native'; 

const io = require('socket.io-client/socket.io'); 
let socket = io('http://localhost:3000'); 

export default class App extends React.Component { 

    constructor(props) { 
     super(props); 
     console.log(socket); 
    } 

    render() { 
     return (
      <View> 
       <Text>Websocket</Text> 
      </View> 
     ); 
    } 
} 

server.js

const express = require('express'); 
const http = require('http') 
const socketio = require('socket.io'); 

const app = express(); 
const server = http.Server(app); 
const websocket = socketio(server); 
server.listen(3000,() => console.log('listening on *:3000')); 

console.log(websocket) 

// The event will be called when a client is connected. 
websocket.on('connection', (socket) => { 
    console.log('A client just joined on', socket.id); 
}); 

मैं संकुल

+0

जो लेख आपने लिंक किया है, वह socket.io लाइब्रेरी के लिए 'import' के बजाय 'आवश्यकता' का उपयोग करने के लिए कहा गया है । क्या आपने कोशिश की? –

+0

साइड सवाल, मैंने पहली बार पिछले सप्ताह के अंत में प्रतिक्रिया मूल के लिए अंतर्निहित वेब सॉकेट लाइब्रेरी का उपयोग किया था। यह ठीक लग रहा था लेकिन यह वेब सॉकेट का उपयोग करने वाला मेरा पहला समय था।Socket.io लाइब्रेरी मूल पुस्तकालय पर क्या लाभ देता है? –

+0

नीचे मेरा जवाब देखें। – klvs

उत्तर

-1

धन्यवाद, पीटर के निम्न संस्करणों का उपयोग कर रहा हूँ। मेरी राय में, आपके द्वारा प्राप्त आलेख उपयोगी नहीं है क्योंकि आप पृष्ठ पर सेवा करने वाले होस्ट से कनेक्ट करने का प्रयास कर रहे हैं। const io = require('socket.io-client/socket.io'); और लिंक के बिना कनेक्ट: socket.io page पर उदाहरण के अनुसार, यह सुनिश्चित करें कि इस लाइन में काम करता है बनाने की कोशिश let socket = io();

यह मेरे लिए काम किया है, लेकिन केवल एक ही कंप्यूटर पर ब्राउज़र में। मुझे लगता है कि जब आप डिवाइस पर परीक्षण करेंगे तो आपको स्थानीयहोस्ट के बजाय अपना आईपी निर्दिष्ट करना होगा।

शुभकामनाएँ :)

5

आपका सर्वर कोड ठीक लगता है। हालांकि आपको यह जांचना चाहिए कि क्या आप किसी अन्य क्लाइंट के माध्यम से अपनी सॉकेट से कनेक्ट कर सकते हैं।

वैसे भी इसे देशी कोड प्रतिक्रिया के लिए प्रयास करें।

आयात द्वारा:

import io from 'socket.io-client/socket.io'

अपने घटक में कार्य करें:

componentDidMount() { 
    const socket = io(YOURURL, { 
     transports: ['websocket'] 
    }) 

    socket.on('connect',() => { 
     console.log("socket connected") 
     socket.emit('YOUR EVENT TO SERVER', {}) 
     socket.on('EVENT YOU WANNA LISTEN', (r) => { 
     }) 
    }) 

    socket.on('connect_error', (err) => { 
     console.log(err) 
    }) 

    socket.on('disconnect',() => { 
     console.log("Disconnected Socket!") 
    }) 
    } 
+0

मैंने इसे इस तरह स्थापित किया है और यह ठीक काम कर रहा है ... केवल अंतर यह है कि मैं 'socket.io-client' से आयात 'आयात' की तरह आयात कर रहा हूं; ' –

+0

ओह यह सुनना बहुत अच्छा है। सॉकेट io के संस्करण के आधार पर नामस्थान अंतर हो सकता है। ऊपर दिए गए कोड को तब तक काम करना चाहिए जब तक आप io फ़ंक्शन –

+0

ट्रांसपोर्ट प्राप्त कर सकें: ['websocket'] यह मेरे लिए एक जीवन बचतकर्ता था !!! आपका बहुत बहुत धन्यवाद! – Pentarex

5

मेरा मानना ​​है कि यह

const io = require('socket.io-client'); 

कौन सा मेरे लिए काम करता है होना चाहिए।

मुझे प्रतिक्रिया देशी का उपयोग करते समय इस तरह के मुद्दों में चलना याद है। बहुत सारे सॉकेट.io ट्यूटोरियल (उनके पृष्ठ पर एक सहित) मान लें कि आप एक HTML दस्तावेज़ में स्क्रिप्ट टैग के माध्यम से जेएस आयात करने की पुरानी शैली का उपयोग कर रहे हैं। ऐसा लगता है कि सॉकेट.ओ ने नेमस्पेस को बदल दिया क्योंकि मुझे याद है कि यह socket.io-client/socket.io कुछ समय पहले मेमोरी परोसता है ...

+0

इसकी आवश्यकता क्यों है और आयात नहीं? ये अंतर क्यों है? – evianpring

+0

यदि आप चाहें तो आयात का उपयोग कर सकते हैं। मेरे उत्तर और ओपी के बीच का अंतर 'socket.io-client' बनाम socket.io-client/socket.io' है। – klvs

संबंधित मुद्दे