HapiJS 和 Socket IO 不发出
HapiJS and Socket IO not emit
我正在尝试使用 hapi 设置 socket.io。我在这里设置了一个准系统回购:https://github.com/imcodingideas/socketio-hapi-example 但这是它的要点。在 server.js
我正在侦听连接
io.sockets.on('connection', (socket) => {
socket.emit({ msg: 'welcome' })
})
我在客户端发送连接
socket.on('msg', data => {
console.log(data)
socket.emit('my other event', { my: 'data' })
})
我没有收到任何 cors 错误或什么也没有,所以它可以连接。
在初始化套接字侦听器之前不要启动服务器。
'use strict'
const Hapi = require('hapi')
const SocketIO = require('socket.io')
const server = Hapi.server({
port: 8081,
host: 'localhost'
})
const init = async () => {
// await server.start() // not here
const io = SocketIO.listen(server.listener)
io.sockets.on('connection', (socket) => {
socket.emit('msg', 'welcome')
})
await server.start() // but start it here.
console.log(`Server running at: ${server.info.uri}`)
}
init()
专业提示
您可以使用Firecamp直观地测试套接字事件和侦听器
您的代码确实有效,将 server.start()
.
放在哪里并不重要
问题出在您的客户端代码上。 socket.io 客户端不存在事件 socket.on('connection')
。该事件称为 connect
。
IO - Event: ‘connect’ Documentation
下面的代码片段应该可以工作。
const socket = io('http://localhost:8081');
socket.on('connect', data => {
console.log('connected');
});
socket.on('msg', data => {
console.log(data);
});
setTimeout(() => {
socket.emit('another event', 'another events data')
}, 2000)
服务器:
const init = async () => {
const io = SocketIO.listen(server.listener)
io.sockets.on('connection', (socket) => {
socket.emit('msg', 'welcome')
socket.on('another event', (data) => {
console.log(data);
})
})
await server.start()
console.log(`Server running at: ${server.info.uri}`)
}
我正在尝试使用 hapi 设置 socket.io。我在这里设置了一个准系统回购:https://github.com/imcodingideas/socketio-hapi-example 但这是它的要点。在 server.js
我正在侦听连接
io.sockets.on('connection', (socket) => {
socket.emit({ msg: 'welcome' })
})
我在客户端发送连接
socket.on('msg', data => {
console.log(data)
socket.emit('my other event', { my: 'data' })
})
我没有收到任何 cors 错误或什么也没有,所以它可以连接。
在初始化套接字侦听器之前不要启动服务器。
'use strict'
const Hapi = require('hapi')
const SocketIO = require('socket.io')
const server = Hapi.server({
port: 8081,
host: 'localhost'
})
const init = async () => {
// await server.start() // not here
const io = SocketIO.listen(server.listener)
io.sockets.on('connection', (socket) => {
socket.emit('msg', 'welcome')
})
await server.start() // but start it here.
console.log(`Server running at: ${server.info.uri}`)
}
init()
专业提示
您可以使用Firecamp直观地测试套接字事件和侦听器
您的代码确实有效,将 server.start()
.
问题出在您的客户端代码上。 socket.io 客户端不存在事件 socket.on('connection')
。该事件称为 connect
。
IO - Event: ‘connect’ Documentation
下面的代码片段应该可以工作。
const socket = io('http://localhost:8081');
socket.on('connect', data => {
console.log('connected');
});
socket.on('msg', data => {
console.log(data);
});
setTimeout(() => {
socket.emit('another event', 'another events data')
}, 2000)
服务器:
const init = async () => {
const io = SocketIO.listen(server.listener)
io.sockets.on('connection', (socket) => {
socket.emit('msg', 'welcome')
socket.on('another event', (data) => {
console.log(data);
})
})
await server.start()
console.log(`Server running at: ${server.info.uri}`)
}