Scoket io发送新数据和新数据

时间:2018-02-06 12:55:52

标签: javascript android node.js react-native socket.io

这是我的服务器代码

const http = require('http');
const express = require('express');
const socketIO = require('socket.io');   
var cors = require('cors');

var app = express();
var server = http.createServer(app);
var io = socketIO(server);
app.use(cors());

app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'DELETE, PUT');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, 
Content-Type, Accept,x-auth');
next();
});
app.get('/', (req, res) => res.send('Hello World!'))
io.on('connection', (socket) => {
console.log('New User is connected...');
var sock = function() {

  var callback = function(data) {
    console.log('checkin data sending');
    socket.emit('checkInDetected', data);
    console.log(data);
   }
  socket.on("checkInDetected", callback);
    return function() {
      socket.removeListener("checkInDetected", callback);
    };
}();
var sock1 = function() {
  var callback2 = function(data) {
    console.log('seding checkout data');
    socket.emit('checkOutDetected',data);
    console.log(data);
  }
  socket.on("checkOutDetected",callback2);
  return function() {
    socket.removeListener("checkOutDetected", callback2);
  }
  }();
    socket.on('disconnect', function(){
      console.log('disconnected');
            //sock();
    });
    socket.on('disconnected', function(){
      socket.disconnect();
    });
});
server.listen(3000, () => {
console.log('Server Started on Port 3000');
});

客户端代码

export default class ScreenTwo extends Component {
constructor(props) {
name: this.props.navigation.state.params.name,
}
componentDidMount() {
axios({
        method: 'post',
        url: 'url',
        data: {
        'name': this.state.name
      }
}).then((response) => {
  console.log(response);
  this.setState({
    userid: response.data.userid
  });
  console.log(this.state.userid);
});
this.socket = SocketIOClient('http://13.126.210.35:3000');
 DeviceEventEmitter.addListener('regionDidEnter', (data) => {
this.socket.emit('checkInDetected',
          {
            'userid': this.state.userid,
            'name': this.state.name,
            'location': 'Bandra'
          }
           );
}
DeviceEventEmitter.addListener('regionDidExit', () => {
this.socket.emit('checkOutDetected',
    {
      'name': this.state.name,
      'userid': this.state.userid
    }
     );
goBack() {
delete this.state.name;
delete this.state.userid;
delete this.props.navigation.state.params.name;
console.log(this.props.navigation.state.params.name);
this.socket.emit('disconnected',
{
}
);
this.props.navigation.dispatch(resetAction);
this.props.navigation.goBack();
}
render() {
const { state } = this.props.navigation;
if (this.state.RegionExit === false) {
    return (
      <View style={styles.container}>
          <View style={styles.backbutton}>
            <TouchableOpacity
              onPress={() => this.goBack()}
              hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }}
            >
              <Image
              source={BackArrow}
              style={{ width: 20 }}
              />
            </TouchableOpacity>
          </View>
          <View sytle={styles.Title}>
            <View style={styles.TitleAndBar}>
              <View
              style={[styles.TitleBarRed, this.state.RegionEntry && styles.TitleBarGreen]}
              />
              <View>
                <Text style={styles.titleText}>Rapid</Text>
                <Text style={styles.titleText}>Out</Text>
              </View>
            </View>
            <View style={styles.statusView}>
              <Text style={styles.StatusText}>Status:</Text>
              <Text style={[styles.StatusOut, this.state.RegionEntry && styles.StatusIn]}>
              {this.state.status}
              </Text>
            </View>
            <View style={styles.Location}>
              <Text style={styles.LocationText}>You are at:</Text>
            </View>
            <View style={styles.LocationNameTitle}>
              <Text
              style={[styles.LocationName, this.state.RegionEntry && styles.LocationNameGreen]}
              >{this.state.station}
              </Text>
            </View>
          </View>
    </View>
    );
}

我有一个本机应用程序发送名称和用户ID,它包含两个屏幕,我使用反应导航从第一个屏幕的textinput输入发送名称到第二个屏幕。然后setState在componentDidMount期间更改第二个屏幕中的名称字符串。 然后在socket上发出它时会发出旧名称和新名称,即使它没有存储它的本地存储。然而它会散发出所有新旧名称。

问题是为什么我在socket中获取旧数据和新数据?

0 个答案:

没有答案
相关问题