Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用自定义路线而不是蓝图的SailsJs websocket?_Javascript_Sockets_Sails.js - Fatal编程技术网

Javascript 使用自定义路线而不是蓝图的SailsJs websocket?

Javascript 使用自定义路线而不是蓝图的SailsJs websocket?,javascript,sockets,sails.js,Javascript,Sockets,Sails.js,我正在跟随官方的航程。希望实现最基本的套接字功能,即客户端连接到套接字,当服务器通知它响应时,执行脚本 问题是套接字请求是http,而我收到的是错误的请求 在帆船上注册插座航线的正确方法是什么 我的客户代码: io.socket.on('hello', function (data) { console.log('Socket `' + data.id + '` joined the party!') }) io.socket.get('/sayhello', function go

我正在跟随官方的航程。希望实现最基本的套接字功能,即客户端连接到套接字,当服务器通知它响应时,执行脚本

问题是套接字请求是http,而我收到的是错误的请求

在帆船上注册插座航线的正确方法是什么

我的客户代码:

io.socket.on('hello', function (data) {
    console.log('Socket `' + data.id + '` joined the party!')
  })
io.socket.get('/sayhello', function gotResponse(data, jwRes) {
    console.log('Server responded with status code ' + jwRes.statusCode + ' and data: ', data);
  });
控制员:

module.exports = {
exits: {
    badRequest: {
      responseType: 'badRequest',
      description: 'The provided data is invalid.',
    },
},
fn: async function (req, res) {
  if (!req.isSocket) {
    return res.badRequest();
  }
  sails.sockets.join(req, 'funSockets');
  sails.sockets.broadcast('funSockets', 'hello', {howdy: 'hi there!'}, req);
  return res.json({
    anyData: 'we want to send back'
  });
}
}

路线:

'GET /sayhello':   { action: 'project/api/app-socket' },

在routes.js文件中,您有:

'GET /sayhello':   { action: 'project/api/app-socket' },
添加到此
isSocket:true
。所以,让它:

'GET /sayhello':   { action: 'project/api/app-socket', isSocket: true },
我是怎么学会的

订阅端点的约定是使用前缀为“subscribe”的操作,因此当我使用此命令和此前缀生成操作时:

sails generate action task/subscribe-to-task
然后它在终端输出中给了我这个提示:

Successfully generated:
 •- api/controllers/task/subscribe-to-task.js

A few reminders:
 (1)  For most projects, you'll need to manually configure an explicit route
      in your `config/routes.js` file; e.g.
          'GET /api/v1/task/subscribe-to-task': { action: 'task/subscribe-to-task', isSocket: true },
这就是为什么我知道我们需要添加
isSocket:true