gpt4 book ai didi

javascript - 有没有办法从 NodeJS 触发 socket.io 连接事件?

转载 作者:行者123 更新时间:2023-11-30 19:42:34 25 4
gpt4 key购买 nike

我正在尝试在 NodeJS 上使用 socket.io 做一些事情,但我无法弄清楚如何(仅)从 NodeJS 触发套接字。

直到现在,我一直在通过从前端调用它来使用 socket.io,但我想知道是否可以做我在前端所做的相同事情,但这次是在 nodeJS 部分(服务器端)。

我猜这是不可能的,因为需要一种连接(我喜欢称它为 TCP 连接,但我不确定这是否正确)并且如果连接中没有第二个参与者,套接字将不会'行不通。这是我的猜测。

所以我现在正在做的是:

app.js(服务器文件)

 ...
const ioLib = require('./path/io.js')(io);
...
...
...

路径/io.js(套接字文件)

 module.exports = function(io){

io.on('connection', async function(socket) {
console.log('socket talks : a user connected');
...
...
});

module.exports.io = io;

}

然后从一个 file.ejs 文件我做:

var socket = io("url");

因此,我们称它为模式,我执行以下操作:

当我访问该网页时,套接字中会触发“连接”事件。我的问题是,我正在尝试尽可能简单地表述它:我如何在没有网页的情况下做同样的事情?是否可以触发 NodeJS 内部的套接字?

你怎么看?

最佳答案

可以从独立的 Node.js 应用程序(它运行的位置并不重要)而不是通过 Web 浏览器访问的 Web 前端连接 Socket.IO 服务器。为了实现这一点,你应该使用 socket.io-client .示例客户端用法可能如下所示:

// Node.js app: client.js
const io = require('socket.io-client');
const socket = io.connect('http://SERVER_IP:SERVER_PORT', {
reconnect: true
});

socket.on('connect', function (socket) {
console.log('Connected to the server!');
});

socket.emit('connected', 'Hi from the client side!');

在这种情况下,您的服务器端应用程序应包含以下内容:

// Node.js app: server.js
io.on('connection', function(socket) {
console.log('socket talks: a user connected');

// Print the message that comes from the socket client
socket.on('connected', function (msg) {
console.log(msg);
});
});

正如您在上面看到的,从根本上说,架构与服务器-客户端相同。现在,让我们更进一步,将所有这些代码放在一个 js 文件中,看看它是如何工作的:

// server/client together: crazy-socketapp.js
const io_server = require('socket.io').listen(3030);
io_server.sockets.on('connection', function (socket) {
console.log('A client is connected!');
socket.on('connected', function (msg) {
console.log(msg);
});
});

const io_client = require('socket.io-client');
const socket = io_client.connect('http://localhost:3030', {
reconnect: true
});

socket.on('connect', function (socket) {
console.log('Connected to the server!');
});

socket.emit('connected', 'Hi from the client side! ');

应用程序的输出:

> A client is connected! 
> Connected to the server!
> Hi from the client side!

希望这对您有所帮助!

关于javascript - 有没有办法从 NodeJS 触发 socket.io 连接事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55245706/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com