gpt4 book ai didi

sockets - 在sails v0.11(客户端)中发出消息

转载 作者:行者123 更新时间:2023-12-04 20:39:35 25 4
gpt4 key购买 nike

我在使用最新版本的sails.js (0.11.0) 时遇到了一些问题。它在 github 中声明,普通的 socket.io 代码将被接受并在sails.js 中运行;但是,我只是尝试在客户端单击以下内容时从客户端发出消息:

$('#myBtn').on('click', function(){
io.socket.emit('message', {
message: {
subject: subject
},
sender: id
});

});

我最终在 io.socket.emit() 行上收到“未捕获的类型错误:未定义不是函数”又名 emit不是 io.socket 的函数。

以下是我看过的一些引用资料:
  • https://github.com/balderdashy/sails/issues/2397
  • http://www.tysoncadenhead.com/blog/getting-started-with-socket-io#.VQCFjvnF9tU

  • 我对sails的更新版本有一种感觉,而不是发出一条消息,我应该按照以下方式做一些事情:
    io.socket.post('/user/message', data, function(data, jwres) {

    });

    我对以下答案感到担忧:
  • Sending session specific messages with socket.io and sails.js

  • 它声明“教室”与 publishCreate 一起被弃用, publishDestroy , introduce , 和 obituary .

    那么我是遵循 Pub/Sub 范式,重新编写更多“socket-io-ish”代码以利用风帆蓝图和 Pub/Sub,还是继续我的 socket-io 方式?

    是否有另一种使用风帆从客户端发出消息的方法?

    最佳答案

    您是正确的,通过套接字与服务器通信的推荐方式是使用 RESTful socket client methods .好处是您可以使用常规 Sails 路由和 Controller /操作架构进行套接字通信,而不必在后端支持整个其他层的订阅和事件处理。这是@mikermcneil 最初创建 Sails 的主要原因之一。有两点需要注意:

  • 您可以使用 req.isSocket 在您的 Controller 操作中确定请求是否来自套接字,以及
  • 您可以使用 io.socket._raw 在客户端上获取原始的底层 socket.io 实例。 ,这将具有 emit方法。但同样,这不是推荐的做法。
  • 关于sockets - 在sails v0.11(客户端)中发出消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28998588/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com