React Native Socket.io 연결
조회수 2228회
리액트 네이티브 개발을 하면서, 리얼타임 채팅이 필요해져서 socket.io 와 nodejs를 이용해서 만들어보려 합니다.
Socket.io 에서 socket.on과 socket.emit 이 작동을 해야하는데,, 안합니다.
접속까지는 하는데, 접속까지만 되고 데이터의 전달이 안됩니다.
Server.js
var http = require('http');
var express = require('express'),
app = module.exports.app = express();
console.log("serverStarted");
var server = http.createServer(app);
const io = require('socket.io')(server);
server.listen(3000); //listen on port 80
io.on('connection',function(socket){
console.log("Client Connected."+socket.id);
socket.on('Button',function(data){
console.log("ButtonPressed");
});
socket.emit('userid',socket.id);
});
Client.js
import React, { Component } from 'react';
import {
Button,
Alert,
Platform,
StyleSheet,
Text,
View
} from 'react-native';
import SocketIOClient from 'socket.io-client';
let socket;
type Props = {};
export default class App extends Component<Props> {
constructor(){
super();
socket = SocketIOClient('http://myip:3000');
Alert.alert("Socket is Connected.");
socket.on('userid',(id)=>{
this.setState({userid:{id}});
Alert.alert(id);
})
}
state = {
userid:"id"
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Button title = "pres" onPress={()=>{
socket.emit('Button',"button");
}}>
</Button>
<Text style={styles.instructions}>
{this.state.userid}
</Text>
<Text style={styles.instructions}>
{instructions}
</Text>
</View>
);
}
}
며칠째 고생중이네요.. 답변 부탁드립니다
댓글 입력