Socket.io 如何在strapi服务器上设置套接字连接
我正在尝试将socket.io与strapi集成。但不幸的是,我一直无法做到这一点,没有任何适当的教程或文档涵盖这方面 我在网上找到的唯一资源是: 但我认为这篇文章已经过时了。我似乎无法运行其中提到的代码而不遇到大量错误 下面是我实现它的尝试,我一直在尝试通过chrome websocket插件智能websocket客户端连接它,但在尝试运行服务器时没有收到任何响应 我完全不知道。任何帮助都将不胜感激Socket.io 如何在strapi服务器上设置套接字连接,socket.io,strapi,Socket.io,Strapi,我正在尝试将socket.io与strapi集成。但不幸的是,我一直无法做到这一点,没有任何适当的教程或文档涵盖这方面 我在网上找到的唯一资源是: 但我认为这篇文章已经过时了。我似乎无法运行其中提到的代码而不遇到大量错误 下面是我实现它的尝试,我一直在尝试通过chrome websocket插件智能websocket客户端连接它,但在尝试运行服务器时没有收到任何响应 我完全不知道。任何帮助都将不胜感激 module.exports = ()=> { // import socket i
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
模块:[
...
“nuxt套接字io”,
...
],
io:{
//模块选项
插座:[
{
名称:'main',
网址:'http://localhost:1337',
},
],
},
created(){
this.socket=this.$nuxtSocket({})
this.socket.on('hello',(msg,cb)=>{
console.log('sockethi')
控制台日志(msg)
})
},
它可以工作。您需要在不同的端口初始化服务器,只需像在strapi中的引导文件中一样创建一个套接字服务器,然后选择不同的端口