我有一个featherjs服务器正在运行,我可以从浏览器客户端(使用webpack)成功连接。现在我正在尝试从运行在Raspberry Pi3上的nodejs应用程序连接到同一台服务器。当我查找时,我看不到服务器的活动。我为该服务设置了一个钩子记录器,它没有记录。我只能假设客户端永远不会连接。该服务没有身份验证挂钩,因为我只是在dev中,因此不需要身份验证模块。
我可以从RPI ping服务器,如果我把服务器ip / port放到RPI上的浏览器中我得到“我是一个羽毛服务器使用客户端”页面,所以网络连接和服务器上的IP设置很好。
有关如何追踪正在发生的事情的任何帮助。没有任何连接日志(在客户端)我不知道发生了什么。我得到的只是.catch的超时错误。
以下是我的客户端代码,来自工作浏览器客户端的客户端代码。
使用浏览器客户端设置
import feathers from 'feathers'
import hooks from 'feathers-hooks'
import socketio from 'feathers-socketio'
import auth from 'feathers-authentication-client'
import io from 'socket.io-client'
// const socket = io('http://localhost:3030', {transports: ['websocket']})
// const socket = io('http://192.168.43.114:3030', {transports: ['websocket']})
const socket = io('http://192.168.0.51:3030', { transports: ['websocket'] })
const api = feathers()
.configure(hooks())
.configure(socketio(socket))
// .configure(auth({storage:window.localStorage}))
export default api
无法运行nodejs客户端设置
const feathers = require('feathers/client');
const socketio = require('feathers-socketio/client');
const hooks = require('feathers-hooks');
// const errors = require('feathers-errors'); // An object with all of the custom error types.
// const auth = require('feathers-authentication-client');
const io = require('socket.io-client/dist/socket.io');
const socket = io('http://192.168.0.51:3030', { transports: ['websocket'] })
const feathersClient = feathers()
.configure(hooks())
.configure(socketio(socket))
//.configure(auth())
module.exports = feathersClient;
正在我的服务上查找的节点应用程序。
const api = require('./api')
const switches = api.service('switches')
switches.find({
paginate: false
})
.then((response) => {
console.log('loading all switch data', response.data)
})
.catch((err) => {
console.log('error loading switch data', err)
})
来自.catch的错误
error loading switch data Error: Timeout of 5000ms exceeded calling switches::find
at Timeout._onTimeout (/opt/lighting-dev/node_modules/feathers-socket-commons/lib/client.js:87:25)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5)
答案 0 :(得分:0)
结果NPM / Node客户端的羽毛文档不正确。 https://docs.feathersjs.com/api/client.html
要求
const io = require('socket.io-client/dist/socket.io');
仅适用于浏览器
对于nodejs只使用基本客户端
const io = require('socket.io-client);
它有效。