问题标签 [io-socket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

c - Сan 我通过套接字收到文件后立即退出 С

我正在尝试从套接字读取文件。我使用 select with timeout 在阅读后退出。

但是,如果我立即知道要发送的文件的大小,我可以在获得正确数量的字节后立即退出。

Сan我在传输之前获得完整的文件大小吗?

或者我应该使用什么在传输完成后立即退出?

0 投票
1 回答
59 浏览

react-native - iOS 模拟器内的 Expo React Native 应用程序不断使用 socket.io 重新连接

堆栈是 atm VueJSReact Nativeusing Expo, 和NestJS用于后端。为方便起见,此 repo包含 VueJS 和 NestJS 部分的工作示例。来自 React Native 端(简化版)的连接是这样实现的:

网关(套接字服务器)看起来很简单:

问题是,虽然移动客户端只连接一次(useEffect钩子被称为一次,除 之外没有其他日志open),但handleConnection会保持连接不同 id 的客户端。connect也从未在 RN 端登录,所以我想它永远不会连接。我用 VueJS 客户端对其进行了测试,它只连接一次(在后端也可以正常工作),一切正常。

仅与模拟器有关的问题吗?有没有办法解决它?

0 投票
0 回答
32 浏览

javascript - 可以使用 IoSocket 从我的服务器接收消息 - React Native

我正在尝试从我的服务器获取消息,我认为我的 react Hooks 缺少一些东西,但我不知道是什么。我与 socketIO 的连接工作正常,并且发出消息功能。

这是我的 UseEffect 代码:

对于发出 IoSocket 函数:

我打印 IoSocket 时的日志:

{"_callbacks": {"$connect": [[Function anonymous]], "$message": [[Function anonymous]]}, "acks": {}, "connected": true, "disconnected": false, “标志”:{},“id”:“0sUT4FUBqGgS1zQ9AA0q”,“ids”:0,“io”:{“_autoConnect”:true,“_callbacks”:{“$close”:[Array],“$error” :[Array],“$open”:[Array],“$packet”:[Array]},“_randomizationFactor”:0.5,“_readyState”:“open”,“_reconnection”:true,“_reconnectionAttempts”:无穷大, “_reconnectionDelay”:1000,“_reconnectionDelayMax”:5000,“_timeout”:20000,“退避”:{“尝试”:0,“因子”:2,“抖动”:0.5,“最大”:5000,“毫秒”:1000},“解码器”:{“_callbacks”:[对象]},“编码器”:{},“引擎”:{“_callbacks”:[对象],“主机名”: “#######”、“id”:“sQk18-qUveuo49pMAA0p”、“opts”:[对象]、“pingInterval”:25000、“pingTimeout”:5000、“pingTimeoutTimer”:10198、“端口”: “3000”,“prevBufferLen”:0,“readyState”:“open”,“secure”:true,“transport”:[WS],“transports”:[Array],“upgrades”:[Array],“升级中": false, "writeBuffer": [Array]}, "nsps": {"/": [Circular]}, "opts": {"hostname": "######", "path": " /socket.io”,“端口”:"3000", "query": [Object], "secure": true}, "skipReconnect": false, "subs": [[Function subDestroy], [Function subDestroy], [Function subDestroy], [Function subDestroy], [函数subDestroy]],“uri”:“############”},“nsp”:“/”,“receiveBuffer”:[],“sendBuffer”:[],“subs ": [[函数 subDestroy], [函数 subDestroy], [函数 subDestroy], [函数 subDestroy]]}sendBuffer": [], "subs": [[Function subDestroy], [Function subDestroy], [Function subDestroy], [Function subDestroy]]}sendBuffer": [], "subs": [[Function subDestroy], [Function subDestroy], [Function subDestroy], [Function subDestroy]]}

提前致谢

0 投票
1 回答
410 浏览

java - 每当我尝试从服务器读取数据时,我都会在客户端收到套接字异常(连接重置)

当我第一次运行下面代码的代码时它运行得很好然后我尝试添加更多代码(比如在服务器端创建缓冲输入流并尝试从客户端读取)并再次运行它给了我这个客户端异常

当我删除添加的代码并仅使用客户端的阅读器运行它时,它仍然无法工作,除非我从客户端删除输入流,否则它将无法工作,这是服务器端

这是客户端

0 投票
0 回答
82 浏览

perl - 使用 IO::Socket::INET 创建 UDP 服务器而不指定端口

我正在尝试UDP使用perl IO::Socket::INET.

我在使用以下参数时遇到困难:

  • LocalHost => "0.0.0.0"
  • LocalPort => 0

我想要实现的是:

  • 监听所有 NIC,因此使用0.0.0.0
  • 让操作系统选择一个端口,因此0使用LocalPort

使用上面的参数TCP,效果很好。将这些参数用于UDP时,它不起作用。

我发现可以使用UDP的是将 a 指定LocalPort为固定的东西,而根本没有指定LocalHost,但这不是我需要的。

我拥有的perl代码如下:

我用来评估我是否达到了我需要的是通过检查lsof -p <pid>. 下表总结了我在试验中看到的情况:

协议 本地主机 本地端口 sockport()输出 lsof -p输出
TCP 0.0.0.0 0 48589 TCP *:48589(听)
UDP 0.0.0.0 0 0 协议:UDP
UDP 未指定 50001 50001 UDP *:50001
UDP 的输出hostname() 0 58066 UDP 主机名:58066
UDP 的输出hostname() 50001 50001 UDP 主机名:50001

第一排的TCP审判是我想要达到的目标,但UDP我无法做到。