将 sockend 与 cote 一起使用时遇到问题
Trouble with using sockend with cote
我有 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
请求。
我错过了什么?
您的 Sockend 和 Responder key
不同。它们彼此没有连接。您需要在 Responder 中省略 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'
})
我有 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
请求。
我错过了什么?
您的 Sockend 和 Responder key
不同。它们彼此没有连接。您需要在 Responder 中省略 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'
})