我有一个运行的feathersjs服务器,我可以从浏览器客户端(使用webpack)成功连接到它。现在我正试图从运行在Raspberry Pi3上的nodejs应用程序连接到同一台服务器。当我进行查找时,我看不到服务器的任何活动。我在该服务上为create设置了一个挂钩记录器,但它什么也不记录。我只能假设客户端从未连接过。该服务上没有身份验证挂钩,因为我刚刚在开发中,所以不需要身份验证模块。
我可以从RPI ping服务器,如果我把服务器的ip/端口放在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))
//.config(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;
node应用程序正在我的服务上查找。
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)
发现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);
它是有效的。