node.js - 无法在本机反应中连接到 socket.io
问题描述
我正在尝试在 nodejs 和 react-native 之间建立 socket.io 连接。但不幸的是,它不起作用。
问题是客户端没有通过套接字与服务器连接。
这是nodejs(服务器端)代码
const express = require("express");
const http = require("http");
const app = express();
const server = http.createServer(app);
const socket = require("socket.io");
const io = socket(server);
server.listen(process.env.PORT || 8000, () => console.log('server is running on port 8000'));
app.use(express.static('client/build'));
const path = require('path');
app.get('*', (req, res) => {
res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
});
io.on('connection', socket => {
console.log('connection')})
这是本机(客户端)代码(修剪)
import React from 'react'
import { Button } from 'react-native'
import io from 'socket.io-client';
const Room = props => {
const sock = useRef();
useEffect(() => {
sock.current = io.connect(<HOSTNAME>, {
forceNode: true,
transports: ['websocket'],
});
//to check if mobile connected to server
console.log('test');
console.log('check 11', sock.current.connected);
sock.current.on('connect', function() {
console.log('check 2', sock.current.connected);
});
});
}
当我尝试连接时,我的控制台中没有收到“检查 2”消息,该消息将在执行 sock.current.on('connect'....
使用的库:react-native 版本:0.62.1,socket.io-client 版本:2.3.0(客户端),socket.io 版本:2.3.0(服务器端)
解决方案
推荐阅读
- java - 使用迭代器打印和更改项目
- javascript - 如何为更改图像添加动画
- solr - Solr Parent Blockjoin 与子级过滤查询
- c# - Monogame 等距十六进制坐标
- mysql - MYSQL 查询到 Laravel Eloquent ORM
- javascript - Getting jquery to add the content of two elements automatically to a button link
- list - 列表上的 mutate_impl(.data, dots) 错误
- javascript - 如何在 JavaScript 中将变量用作字符串?
- javascript - 使用位掩码确定是否设置了 2 个或更多布尔值
- r - 如何创建要插入 ggplot 的对象(当有多个带有 + 的部分时)?