我应该在哪里为 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 编写客户端代码?的主要内容,如果未能解决你的问题,请参考以下文章