Socket.io 如何在strapi服务器上设置套接字连接

Socket.io 如何在strapi服务器上设置套接字连接,socket.io,strapi,Socket.io,Strapi,我正在尝试将socket.io与strapi集成。但不幸的是,我一直无法做到这一点,没有任何适当的教程或文档涵盖这方面 我在网上找到的唯一资源是: 但我认为这篇文章已经过时了。我似乎无法运行其中提到的代码而不遇到大量错误 下面是我实现它的尝试,我一直在尝试通过chrome websocket插件智能websocket客户端连接它,但在尝试运行服务器时没有收到任何响应 我完全不知道。任何帮助都将不胜感激 module.exports = ()=> { // import socket i

我正在尝试将socket.io与strapi集成。但不幸的是,我一直无法做到这一点,没有任何适当的教程或文档涵盖这方面

我在网上找到的唯一资源是: 但我认为这篇文章已经过时了。我似乎无法运行其中提到的代码而不遇到大量错误

下面是我实现它的尝试,我一直在尝试通过chrome websocket插件智能websocket客户端连接它,但在尝试运行服务器时没有收到任何响应

我完全不知道。任何帮助都将不胜感激

module.exports = ()=> {
  // import socket io
  var io = require('socket.io')(strapi.server)
  console.log(strapi.server) //undefined
  // listen for user connection
  io.on('connect', socket => {
  
      socket.send('Hello!');
      console.log("idit")

      // or with emit() and custom event names
      socket.emit('greetings', 'Hey!', { 'ms': 'jane' }, Buffer.from([4, 3, 3, 1]));

      // handle the event sent with socket.send()
      socket.on('message', (data) => {
        console.log(data);
      });

      // handle the event sent with socket.emit()
      socket.on('salutations', (elem1, elem2, elem3) => {
        console.log(elem1, elem2, elem3);
      });
    });
};

所以我找到了解决办法。耶。我会把它放在这里,以防万一有人需要它

boostrap.js

module.exports=async()=>{
process.nextTick(()=>{
var io=require('socket.io')(strapi.server);
io.on('connection',异步函数(套接字){
console.log(`a user connected`)
//在用户连接上发送消息
emit('hello',JSON.stringify({message:await-strapi.services.profile.update({“posted_by”}));
//侦听用户diconnect
socket.on('disconnect',()=>{
console.log('a user disconnected')
});
});
strapi.io=io;//在strapi主对象内注册套接字io,以便在任何地方全局使用它
})
};
在以下位置找到此文件:_

显然,服务器启动时socket.server不可用。因此,您必须使用process.nextTick等待socket.server初始化

我还将添加一些设置时遇到的问题

如何从nuxt、vue或react等外部客户端进行连接?

你只需要通过“http://localhost:1337“这是我通常给斯特拉皮的地址

我使用nuxt作为客户端,这就是如何在客户端设置我的socketio

  • 我首先通过npm安装了nuxt套接字io
  • 根据其文档编辑了nuxt.config文件
  • 模块:[
    ...
    “nuxt套接字io”,
    ...
    ],
    io:{
    //模块选项
    插座:[
    {
    名称:'main',
    网址:'http://localhost:1337',
    },
    ],
    },
    
  • 然后我终于在我的一个页面中添加了一个侦听器
  • created(){
    this.socket=this.$nuxtSocket({})
    this.socket.on('hello',(msg,cb)=>{
    console.log('sockethi')
    控制台日志(msg)
    })
    },
    

    它可以工作。

    您需要在不同的端口初始化服务器,只需像在strapi中的引导文件中一样创建一个套接字服务器,然后选择不同的端口