sails.io.js - nodejs - 资源丰富的 PubSub 未接收模型事件

Posted

技术标签:

【中文标题】sails.io.js - nodejs - 资源丰富的 PubSub 未接收模型事件【英文标题】:sails.io.js - nodejs - Resourceful PubSub not receiving model events 【发布时间】:2016-02-28 20:24:07 【问题描述】:

我正在尝试订阅一个 nodejs 应用程序来为sails 中的事件建模。这是我的代码:

var socketIOClient = require('socket.io-client'),
    sailsIOClient = require('sails.io.js');

var io = sailsIOClient(socketIOClient);

io.sails.url = 'http://localhost:1337';

io.socket.on("agent", function(event) 
  console.log(event);
)

io.socket.get("/agent", function(resData, jwres) )

这是客户端(nodejs)连接时,sails 服务器上所有输出的链接:

https://gist.github.com/CiscoKidxx/e5af93ebcc24702ba4f8

我的理解是,当我创建一个新代理时,它应该触发一个列出更改的 console.log(event)。这没有发生。在脚本启动时,我确实得到了“现在连接到风帆”。有什么想法吗?

这是我在 UserController 中创建新代理的调用:

Agent.create(
  syncToken: token,
  owner: user.id
).exec(function (err, newAgent) 
  Agent.publishUpdate(newAgent.id, syncToken: newAgent.syncToken);

【问题讨论】:

您如何对Agent 模型进行更改?如果您直接对数据库进行更改,则需要使用.publishUpdate()。见sailsjs.org/documentation/reference/web-sockets/… 每次用户注册时我都会创建一个新代理,并通过 UserController.js 将代理与新用户相关联我已在我的 OP 中包含了其中的一些代码。 【参考方案1】:

上面的服务器端代码 sn-p 没有在回调中显示对 Agent.publishCreate 的调用,而是一个 publishUpdate

据我了解,仅在使用蓝图时才会自动触发 publishCreate - 但不会像上面的 Agent.create 这样的编程调用。

因此,将其从 publishUpdate 更改为 publishCreate 可能会在您的上下文中修复它。

【讨论】:

以上是关于sails.io.js - nodejs - 资源丰富的 PubSub 未接收模型事件的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS中的静态资源管理服务

nodejs请求静态资源404错误,后台需处理返回http请求的静态资源

Nodejs之静态资源处理

nodejs 几行代码实现静态资源服务器

nodejs 几行代码实现静态资源服务器

nodejs 静态资源文件与登陆交互