Я потратил немало времени, пытаясь подключить Socket.IO-Client к серверу, работающему на Sails.js framework. Клиент в основном представляет собой простое приложение JavaScript, работающее с Node.js на малине Pi.Как подключить Socket.IO-Client к серверу Sails.js?
Идея состоит в том, что простое устройство подключается к серверу, затем сервер регистрирует устройство и подписывает его на сообщения. Устройство получает сообщение от сервера и выполняет некоторые действия. Я не хочу, чтобы клиент зависел от какой-либо структуры, и по этой причине я стараюсь избегать использования Sailsjs-socket.io-client. В настоящий момент оба сервера и клиент работают на моем локальном компьютере. Вот код:
// Server side. Sails.js. DevicesController.js
module.exports = {
handshake: function (req, res) {
if (!req.isSocket) return res.badRequest();
Devices.create({}).exec(function (error, data) {
Devices.subscribe(req.socket, data);
});
return res.ok();
}
};
// Client side
var socket = require('socket.io-client')('http://localhost:1337/devices/handshake');
socket.on('error', function(e) {
console.log(e);
// Here I get 'Invalid namespace'
});
Таким образом, я получаю ошибку «Invalid имен» на стороне клиента, и, если я прав, то это означает, что сервер не имеет "/устройства/рукопожатие ". Однако на стороне сервера, если я перечисляю существующие идентификаторы комнат (sails.sockets.rooms()), я вижу, что новая комната всегда создается, когда клиент пытается подключиться к серверу.
Я попытался подключиться к «устройствам/рукопожатию» из браузера с приведенным ниже javascript и, по-видимому, сработал. Очевидно, он работает с Sailsjs-socket.io-клиентом.
io.socket.get('/devices/handshake', function (data, jwres) {
console.log(jwres);
});
io.socket.on('devices', function (data, jwres) {
console.log(data);
});
Любые идеи, что я делаю не так?
Hey sgress454, я борюсь с аналогичной проблемой, но использую клиентский сокету Python [См. МОЙ ВОПРОС] (http://stackoverflow.com/questions/40949932/how-to-connect-to-sails-socket- ИО-сервер из-а-питон-клиент испытанного-sailssock). У вас есть какие-то дальнейшие указания? – zabumba