我有README的转换服务,编辑很少
const cote = require('cote')
const responder = new cote.Responder({
name: 'currency conversion responder',
key: 'conversion',
respondsTo: ['convert']
})
const subscriber = new cote.Subscriber({ name: 'arbitration subscriber' })
const rates = { usd_eur: 0.91, eur_usd: 1.10 }
subscriber.on('rate updated', (update) => {
rates[update.currencies] = update.rate
})
responder.on('convert', (req, cb) => {
console.log(`Request: ${JSON.parse(req)}`)
const convertedRate = req.amount * rates[`${req.from}_${req.to}`]
cb(null, `${req.amount} ${req.from} => ${convertedRate} ${req.to}`)
})
我创建了sockend.js
const cote = require('cote')
const app = require('http').createServer()
const io = require('socket.io').listen(app)
io.on('connection', (socket) => {
socket.join('room1')
})
app.listen(5555)
const sockend = new cote.Sockend(io, {
name: 'Sockend'
// key: 'a certain key'
})
现在,我尝试使用socket.io客户端连接到sockend
const Io = require('socket.io-client')
// const socket = Io.connect('http://localhost:8080');
const url = 'http://127.0.0.1:5555/'
const socket = Io.connect(url)
const request = { type: 'convert', from: 'usd', to: 'eur', amount: 100 }
socket.on('connect', async () => {
console.log(socket.connected) // true
socket.emit('convert', request, function (data) {
console.log(`sockend response ${JSON.parse(data)}`)
})
})
但是我从未在转换服务响应器中收到convert
请求。
我想念什么?
答案 0 :(得分:1)
您的Sockend和您的响应者key
不同。它们没有相互连接。您需要在“响应者”中省略key
属性,并由Sockend拾取它,而在同一网络上没有密钥。或者使它等于Sockend中的键。这两项工作:
const responder = new cote.Responder({
name: 'currency conversion responder',
key: 'conversion',
respondsTo: ['convert']
})
const sockend = new cote.Sockend(io, {
name: 'Sockend',
key: 'conversion'
})
或
const responder = new cote.Responder({
name: 'currency conversion responder',
respondsTo: ['convert']
})
const sockend = new cote.Sockend(io, {
name: 'Sockend'
})