首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将socket.io与Heroku部署的React本地应用程序连接?

如何将socket.io与Heroku部署的React本地应用程序连接?
EN

Stack Overflow用户
提问于 2018-04-24 21:06:32
回答 2查看 1.2K关注 0票数 0

我几乎在谷歌上搜索了我的手指试图找出答案。似乎已有的关于将socket.io与React本地连接的许多信息已经过时了,或者我只是解释错了?

我已经成功地连接了客户端(当我连接到我的应用程序时,我得到了客户机控制台日志)。好像是服务器端让我出问题了。为什么从客户端发出的数据没有作为日志显示在我的终端中?我的console.logs中没有一个相关的server.js正在进行日志记录,但是App.js console.logs正在注册。

编辑:这里是我的完整App.js文件:

代码语言:javascript
复制
import Expo from 'expo';
import React from 'react';
import { Dimensions, StyleSheet, Text, View } from 'react-native';

import store from './src/store';
import { Provider } from 'react-redux';


// window.navigator.useragent = 'react-native'; -> not necessary anymore?



const ROOT_URL = 'https://myherokudomain.herokuapp.com';

const io = require('socket.io-client/dist/socket.io');
const socket = io.connect(ROOT_URL);


socket.on('connect', () => {
     console.log('Connected to server');
});


socket.on('example', (data) => {
    console.log(data);

    socket.emit('my other event', { my: 'data' });
});


socket.on('disconnect', () => {
    console.log('Disconnected from server');
});

export default class App extends React.Component {


render() {

// const MainNavigator = my react-navigation system

return (
  <Provider store={store}>
    <View style={styles.container}>
      <MainNavigator />
    </View>
  </Provider>
  );
 }
}

编辑:这里是我的完整server.js文件:

代码语言:javascript
复制
const config = require('./config/config');
const { mongoose } = require('./db/mongoose');
const express = require('express');

const cors = require('cors');


const app = express();
const port = process.env.PORT;

// ************ Include and use separate routes file
app.use(require('./routes/routes'));
// ************


//Cross-Origin resource sharing. cors library solves CORS problems.
app.use(cors());


//***********
/* Chat server code*/


// enabled heroku session affinity: 
// see https://devcenter.heroku.com/articles/session-affinity
// to enable:   heroku features:enable http-session-affinity
// to diable:   heroku features:disable http-session-affinity

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


const server = http.createServer(app);

const io = socketIO(server, { origin: "*:*" });
//********** */


io.on('connection', (socket) => {
    console.log('A client just joined', socket.id);

    socket.emit('example', { hello: 'world' });

    socket.on('my other event', (data) => {
        console.log(data);
    });


    socket.on('disconnect', () => {
        console.log('User was disconnected');
    });
});


server.listen(port, (err) => {
    console.log(`started on port ${port}`);
});



module.exports = { app };

我可以在客户端获得控制台日志(例如,当我在世博会上打开我的应用程序时,“连接到服务器”和"hello: world“之类的东西就会显示出来。但我没有得到服务器端控制台日志。

我做错了什么?如何让socket.io完全使用部署的React本地应用程序?

我真的很感激你的帮助!我一直被困在这件事上。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-24 23:50:50

我假设所有的代码都正常工作,只是日志记录不起作用,因为这就是你要问的全部内容。问题是Node没有输出到浏览器的控制台。

如果它部署在heroku上,那么您应该看到所有记录在那里,否则您可以使用像https://github.com/node-inspector/node-inspector这样的库将其输出到浏览器。

票数 0
EN

Stack Overflow用户

发布于 2018-04-24 21:09:26

您不会获得服务器端控制台日志,因为1。他们只在服务器上登录,而2)如果你真的想把数据发回,你就不会发射它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50010719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档