Feathersjs节点套接字客户端无法连接

时间:2017-10-08 01:52:43

标签: node.js sockets socket.io raspberry-pi3 feathersjs

我有一个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)

1 个答案:

答案 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);

它有效。