【问题标题】:React Native Socket.io How to Connect to Local Node Server from DeviceReact Native Socket.io 如何从设备连接到本地节点服务器
【发布时间】:2016-01-28 04:18:03
【问题描述】:

当我在 iOS 模拟器中将 io.connect() 方法指向我的 localhost 时,我正在建立连接,因此一切正常。

但是当connect() 方法指向我机器的LAN IP 地址时,我无法在模拟器或设备上成功连接到服务器..

我现在对这个很困惑,任何帮助将不胜感激。

【问题讨论】:

    标签: ios node.js socket.io react-native


    【解决方案1】:

    已解决,通过ngroklocalhost:3000 建立隧道并允许异常域。

    在您的info.plist 中,您需要App Transport Security Settings 下的以下内容

    在 mac 命令行上运行

    • brew cask install ngrok
    • ngrok http 3000

    然后获取输出的 ngrok.io URL 并在您的 io.connect() 调用中使用它,您应该已经设置好了。

    【讨论】:

    • 这也适用于我运行 Rails 服务器。 Ngrok 现在还输出一个https URL,因此如果您使用它,则无需将例外添加到Info.plist(只需ngrok http 3000 并复制https URL)。
    • 嘿,我正在使用ngrok,但我仍然无法连接到套接字服务器,here's 详细信息
    【解决方案2】:

    简单的方法-> 使用 Socket.io 连接到本地节点服务器:

    第一步:您需要将 socket.io 安装到您的项目中 -

    npm install socket.io-client
    or 
    yarn add socket.io-client
    

    App.js 文件:

    import { io } from "socket.io-client";
    
      const socketIOConnectionWithLocalhost = () => {
        var socket = io('localhost:3000', { jsonp: false });
        console.log('socket: ', socket);
    
        socket.on('connect', () => {
          console.log("socket connected...");
        })
    
        socket.on("update", () => {
          console.log('App.js : socket event recieved:');
        });
      };
    

    第二步: 创建 server 文件夹并在其中创建两个文件:app.js 和 index.html(如下所示图片)

    服务器/app.js 文件:

    var express = require('express');
    var app = express();
    const server = require('http').createServer(app);
    const io = require('socket.io')(server);
    
    io.on('connection', (socket) => {
        console.log('server - app.js - socket.id: ', socket.id);
    
        socket.on('update', (data) => {
            console.log('server - app.js - update:', data);
            io.emit('update', socket.id)
        });
    });
    
    app.get('/', function (req, res) {
        res.sendFile(__dirname + '/index.html');
    });
    
    server.listen(3000);
    

    index.html 文件:

    <h1>Welcome To Server</h1>
    
    <button>UPDATE</button>
    <script src="/socket.io/socket.io.js"> </script>
    
    <script>
        var socket = io();
        var button = document.querySelector('button');
        button.onclick = function(){
            console.log('index.html - buttion click...')
            socket.emit('update');
        }
    </script>
    

    第三步:使用以下命令启动节点服务器:

    首先进入服务器文件夹,然后输入以下命令 -> cd Server

    node app.js
    

    然后打开任何浏览器并点击 localhost url -> http://localhost:3000/

    谢谢..!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2015-05-20
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 2011-11-11
      • 2013-03-04
      相关资源
      最近更新 更多