【问题标题】:Send messages to specific socket without socket.io in node.js在node.js中将消息发送到没有socket.io的特定套接字
【发布时间】:2011-09-11 04:55:17
【问题描述】:

我想通过套接字向特定客户端发送消息,但如果没有 socket.io,我似乎无法弄清楚如何做到这一点。我不能使用 socket.io 的原因是因为我正在尝试连接到 flash 客户端,并且我在 stackoverflow 上的许多线程中读到 socket.io 并不意味着连接到 flash clent。我有工作代码将节点套接字服务器连接到在闪存中创建的套接字客户端(actionscript 3),但它将信息广播给连接到套接字的每个人。我的想法是,如果有某种方法可以将信息发送到特定的套接字 id,那么我就可以开展业务了。我查看了文档并没有找到任何有关如何执行此操作的信息,但是我再次在文档中找不到有关特定套接字 ID 的任何文档,但是使用“socket.id”会给出 ID,所以我'我想知道是否有一些未记录的方法可以做到这一点。

仅供参考,这是一款纸牌游戏,每个连接的玩家都会收到他们的卡片。游戏逻辑由服务器端处理,我可以正常工作。现在我只需要让每个玩家只需要他们需要的信息。谢谢。

达里尔

【问题讨论】:

    标签: node.js


    【解决方案1】:

    我确定您可以将Adobe® Flash® Socket 与socket.io 结合使用。当您查看可用的transports(browsers) 时,您会注意到socket.io 也支持Adobe® Flash® Socket。不过老实说我不知道​​这方面的具体细节,但我认为你可以通过学习socket.io's specification page来了解它们。

    查看socket.io's WIKI 时,我还发现已经有一个库可以将socket.io 与Adobe® Flash® Socket 一起使用。该库称为FlashSocket.IO,尽管我自己不知道任何闪存,但我相信它可以帮助您。

    Adobe® Flash® Socket 在最新的 socket.io 分支中是标准禁用的,但您可以通过studying configuring socket.io 轻松启用它们。此页面告诉您如何启用所有传输,我将在下面总结:

    io.set('transports', [                     // enable all transports (optional if you want flashsocket)
        'websocket'
      , 'flashsocket'
      , 'htmlfile'
      , 'xhr-polling'
      , 'jsonp-polling'
    ]);
    

    如果您还没有足够的答案(我认为这应该对您有所帮助)我认为您也可以file an issue at socket.io's issue page,因为我发现 socket.io 的维护人员非常友好,并且会告诉您如何做到这一点。痛。

    最后,要使用普通节点完成此操作,您必须自己跟踪所有活动的套接字连接(会话),并且只将该消息发送到该特定套接字。这是一项平凡的任务,但我认为有足够多的教程可以教你(你也可以看看 socket.io 他们是如何实现这一点的,尽管这是一个相当大的项目/代码库)。

    我希望这回答了您的问题。如果没有,我建议您例如在 cmets 中提出问题。

    【讨论】:

    • 嗨,阿尔弗雷德,感谢您的回复。我实际上查看了 Flashsocket.io,但我遇到的问题与大多数教程相同:它与节点 0.7 不兼容。至于使用普通节点尝试此操作,我想出与您相同的关于向特定套接字连接发送消息的方法,但是我查看了许多节点教程并且没有看到任何详细信息如何做到这一点,至少没有不要使用socket.io。您在哪里看到详细说明如何在没有 socket.io 的情况下将消息发送到特定套接字连接的教程?
    • @Darryl 你也可以使用 npm 在 0.7.x 旁边安装 socket.io 0.6.x。您可以使用 npm 在本地安装软件包,该软件包将安装在 npm_module 文件夹 => blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation。还有一个可用的 flashSocket.IO 0.7.x 分支 => github.com/simb/FlashSocket.IO/tree/0.7.x。还有一个简单的flash教程rhuno.com/flashblog/2011/05/22/…。您将不得不进行一些谷歌搜索,但我过去曾找到更好的教程。
    • Alfred,我不愿意对过时的版本进行标准化,我尝试了 flashsocket.io 的 0.7 分支。显然它不完整(我和作者谈过,他说他还没有完全更新文件)。我也找不到任何人使用它来获得更多帮助的例子。您在 rhuno.com 上发布的 flash 教程是我正在使用的教程。它没有向单个客户端广播的代码:信息被发送到使用 socket.write 连接的每个客户端,该命令没有向单个客户端广播的方法。我已经用谷歌搜索了大约 3 周但没有成功。
    猜你喜欢
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-08
    • 2012-05-24
    • 1970-01-01
    相关资源
    最近更新 更多