io() 函数前端——socket.io

Posted

技术标签:

【中文标题】io() 函数前端——socket.io【英文标题】:Io () function frontend - socket.io 【发布时间】:2017-04-16 12:13:20 【问题描述】:

我不明白当我将io () 函数调用到 index.html 时,nodejs 怎么可能知道必须执行io.on () 函数。我知道 index.html 中的io () 函数用于打开客户端和服务器之间的新连接......但我不明白客户端和服务器之间使用 socket.io 的通信。 可能是因为进入服务器,我需要socket.io,然后socket.io进入服务器监听最终请求执行on ()函数。

但是为了做到这一点,套接字。 io必须获取整个http + express包才能监听客户端的请求……对吗?

谢谢大家 莫里斯

【问题讨论】:

【参考方案1】:

不完全清楚你在问什么,但在客户端:

var socket = io();

是一个快捷方式:

var socket = io.connect();

这会尝试建立与加载当前网页的同一主机和端口的 socket.io 连接,并将表示该连接的对象存储在 socket 变量中。

但我不明白客户端和服务器之间的通信 使用 socket.io。

如果服务器正在侦听 socket.io 连接,则io() 将连接到该服务器。从那时起,客户端可以使用socket.on('someMsg', fn) 监听传入的消息,或者客户端可以使用socket.emit('someMsg, someData); 向服务器发送消息。

同样,服务器既可以侦听来自客户端的传入消息,也可以向客户端发送新消息。

但是为了做到这一点,套接字。 io必须获取整个http+express 用于监听客户端请求的包...对吗?

嗯,有点。如果您想要一个同时为您的网页提供服务并可以接受 socket.io 连接的 Web 服务器,那么您至少需要 http 模块(用于服务器)和 socket.io 模块(用于 socket.io 服务器)。如果您想要一个功能更全面的 Web 服务器,您可以在其中定义路由和许多其他功能,那么是的,您可以同时使用 Express 和 socket.io。

【讨论】:

以上是关于io() 函数前端——socket.io的主要内容,如果未能解决你的问题,请参考以下文章

angular 4/socket.io 访问全局变量和函数调用

socket.io 广播不适用于 React

React + Sails + Socket.io

JAVA-socket.io中常用注解的作用

函数式夜点心:IO Monad 与副作用处理

前端开发人员问题四