我应该在哪里为 socket.io 编写客户端代码?

Posted

技术标签:

【中文标题】我应该在哪里为 socket.io 编写客户端代码?【英文标题】:Where should i write the client side code for socket.io? 【发布时间】:2011-10-08 23:25:05 【问题描述】:

我是 node.js 和 socket.io 的初学者。据我所知,在 node.js 中,不需要任何客户端代码。我们可以通过将浏览器指向http://localhost:port来简单地连接到服务器。

但是,对于 socket.io,似乎有客户端代码。但是,我应该在哪里写这个?我应该把它写在一个 html 文件中并从一个普通的 http 服务器托管它吗?我对基本架构本身有点困惑,我在任何地方都找不到这个基本解释。请多多包涵

谢谢

【问题讨论】:

【参考方案1】:

我最近用 Node.js 和 Socket.IO 编写了一个非常简单的聊天应用程序。像上面的评论一样,你可以通过配置一个静态目录来使用 express 来服务器你的 HTML:

app.configure(function() 
  app.use(express.static(__dirname + '/'));
);

在此处查看完整代码:https://github.com/pifantastic/stupid-simple-chat/blob/master/server.js

*编辑*

我应该补充一点,在 Socket.IO > 0.7 中,您可以直接从 Node.js 中提供 socket.io JS 库,它位于 /socket.io/socket.io.js:

<script src="/socket.io/socket.io.js"></script>

【讨论】:

感谢您的代码。但是,我不明白你所说的“通过配置静态目录来服务你的 html”是什么意思。你能告诉我你的意思吗? Express 使用 Connect 作为中间件提供一个简单的静态文件服务器。您必须对其进行配置以了解要从哪个目录提供静态文件。在上面的示例中,我告诉 express 从当前目录提供静态文件。这样我就可以将 index.html 文件放在 server.js 文件旁边,这样就可以从节点提供服务。 非常感谢。现在,我能够提供纯 html 页面。但是,如果我在 html 页面中使用 socket.io 客户端,我会在服务器日志中获得“不支持客户端协议”的信息。我猜这个错误与正在使用的传输协议有关。当您为您的聊天应用程序编写 socket.io 客户端 html 页面时,您是否遇到此错误? 你运行的是什么版本的node.js Socket.IO模块? 我正在运行 node0.4.9 和 socket.io 0.7【参考方案2】:

首先,如果您不使用express,您可能应该使用。除此之外,它是一个静态文件服务器,因此您可以将客户端 javascript 放入 /public/javascripts 并从 http://localhost:port/javascripts/myscript.js 使用它们

这是一个hello world的例子http://codr.cc/s/2376dc51/js

【讨论】:

感谢链接。但是,当我将浏览器指向 myscrips.js 时,我将 javascript 文件的内容作为纯文本获取。它没有执行 javascript 这很正常。您需要将其添加到 html 文件中。我用一个示例 html 文件更新了链接。 仍然无法工作。现在,我什么也没得到……我从浏览器加载了 html 文件。萤火虫没有给出任何错误,无论如何。页面只是空的。 :( 我仍然不知道如何编写客户端代码并使其与服务器通信

以上是关于我应该在哪里为 socket.io 编写客户端代码?的主要内容,如果未能解决你的问题,请参考以下文章

Socket IO 节点向所有客户端广播数据

Socket.io断开事件错误地为其他用户触发,然后再次连接

用于 swift4 ios 的 Socket.io

通过 Socket.IO 的 WebSocket 设计模式

Socket.io - 分享“好友活动”设计模式

socket.io,动态添加消息处理程序