socket.io 发射问题:io 如何发射自身?

Posted

技术标签:

【中文标题】socket.io 发射问题:io 如何发射自身?【英文标题】:socket.io emit question : How does an io emit itself? 【发布时间】:2020-11-10 11:02:11 【问题描述】:

我想在 express 路由器中使用 emit 事件, 所以我正在尝试通过 global.io。

但问题是,即使我添加了这段代码

io.emit('join','Tudis')

在 server.js 中,我看不到任何响应输出,

(我认为应该有“有人加入:Tudis” 编译后吗?) 请赐教,非常感谢。

-----server.js的代码---------

const express = require('express')
const socketio=require('socket.io')
const http=require('http')

const serverPORT=5000

const app = express();
const server = http.createServer(app)
const io=socketio(server)

io.on('connection',(socket)=>   
  socket.on('join',(name)=>
    console.log('someone joined :' + name)
  ) 
)

global.io=io
const router=require('./router')
app.use(router)

io.emit('join','Tudis')

server.listen(serverPORT,
  ()=> console.log('server is up at : '+serverPORT)
  )

【问题讨论】:

嗨,我认为您需要一个客户端也连接到您的服务器所连接的套接字,并且您的客户端应该发出此消息'join' 我个人推荐你使用这个socket.io client工具,将它连接到你的服务器并发送消息'join' 在您执行io.emit('join', 'Tudis') 时,您的服务器刚刚启动并且没有连接的客户端。因此,该消息不会发送给任何人,因为没有人可以将其发送给任何人。如果你把它放在socket.on('join', ...) 处理程序中,那么你会收到这条消息。 【参考方案1】:

我找到了答案……谢谢大家!!我真的好开心!!

Node.js client for a socket.io server

//client.js
var io = require('socket.io-client');
var socket = io.connect('http://localhost:3000', reconnect: true);
socket.emit('CH01', 'me', 'test msg');

经过这么长时间的学习...感觉很累 但我想我终于可以开始构建一些东西了 XD

谢谢!!!!!!

(顺便说一下,在我选择这种方式之前, 我实际上是在使用 puppeteer 访问网站以发送 emit ..

虽然它“有效”)

【讨论】:

以上是关于socket.io 发射问题:io 如何发射自身?的主要内容,如果未能解决你的问题,请参考以下文章

如何重用 socket.io 发射功能?试图将套接字发射功能附加到 SwiftUI 按钮(操作)?

如何从 socket.io-redis 发送私人消息(发射)

如何在套接字函数之外使用(socket.io)发射函数-nodejs,express

node.js socket.io 如何发射到特定的客户端?

覆盖socket.io的发射和开启?

socket.io 发射在 socket.on 中不起作用