【发布时间】:2016-01-28 04:18:03
【问题描述】:
当我在 iOS 模拟器中将 io.connect() 方法指向我的 localhost 时,我正在建立连接,因此一切正常。
但是当connect() 方法指向我机器的LAN IP 地址时,我无法在模拟器或设备上成功连接到服务器..
我现在对这个很困惑,任何帮助将不胜感激。
【问题讨论】:
标签: ios node.js socket.io react-native
当我在 iOS 模拟器中将 io.connect() 方法指向我的 localhost 时,我正在建立连接,因此一切正常。
但是当connect() 方法指向我机器的LAN IP 地址时,我无法在模拟器或设备上成功连接到服务器..
我现在对这个很困惑,任何帮助将不胜感激。
【问题讨论】:
标签: ios node.js socket.io react-native
已解决,通过ngrok 与localhost:3000 建立隧道并允许异常域。
在您的info.plist 中,您需要App Transport Security Settings 下的以下内容
在 mac 命令行上运行
brew cask install ngrokngrok http 3000然后获取输出的 ngrok.io URL 并在您的 io.connect() 调用中使用它,您应该已经设置好了。
【讨论】:
https URL,因此如果您使用它,则无需将例外添加到Info.plist(只需ngrok http 3000 并复制https URL)。
ngrok,但我仍然无法连接到套接字服务器,here's 详细信息
简单的方法-> 使用 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/
谢谢..!
【讨论】: