Socket.IO 教程示例遇到问题。文件不完整或 PEBCAK?
Posted
技术标签:
【中文标题】Socket.IO 教程示例遇到问题。文件不完整或 PEBCAK?【英文标题】:Having trouble with the Socket.IO Tutorial samples. Incomplete documentation or PEBCAK? 【发布时间】:2011-11-25 05:50:07 【问题描述】:周末,我试图弄清楚 websockets(因为我认为知道这可能是一件非常有趣的事情)。
我搜索了 socket.io 教程并找到了这个 Good beginners tutorial to socket.io?,它建议我从 http://socket.io 开始
在一个新的 ubuntu 上,我构建了 node.js 4.1.13-pre
(许多包不适用于当前的 0.5.8)
我添加了 NPM 和 express、jade 和 socket.io 包。
我设置并运行了一个服务器:
var io = require('socket.io').listen(8000); // I moved the port
var express = require('express'); // I had to add this
io.sockets.on('connection', function (socket)
socket.emit('news', hello: 'world' );
socket.on('my other event', function (data)
console.log(data);
);
);
我克隆了https://github.com/LearnBoost/socket.io.git
,并在我将socket IO克隆到的位置上方的目录中创建了一个index.html
<script src="socket.io/lib/socket.io.js"></script> <!-- changed path from example -->
<script>
var socket = io.connect('http://localhost:8000');
socket.on('news', function (data)
console.log(data);
socket.emit('my other event', my: 'data' );
);
</script>
当我在本地加载索引页面时,出现错误:require not defined
我假设我在这里遗漏了一些东西,客户端 JS 与 lib 文件夹中的不同吗?我是否需要添加一些内容以允许存在“要求”?
我错过了什么?如何正确提供客户端 JS?
【问题讨论】:
【参考方案1】:改用<script src="/socket.io/socket.io.js"></script>
。
【讨论】:
我可能应该提到我从“文档提供”代码切换的原因是因为那也不起作用。我没有尝试的是"http://localhost:8000/socket.io/socket.io.js"
也许socket.io'编译'并服务器客户端代码并添加自己的url-transport来表达。
是的,Socket.IO 负责为客户端代码提供服务。但/socket.io/socket.io.js
应该等价于http://localhost:8000/socket.io/socket.io.js
(假设您从http://localhost:8000
提供HTML 文件)。
谢谢,我知道这很简单。我肯定希望通信/套接字服务器与静态文件分开。所以我想我想在我能走路之前就跑了。静态页面是单独提供的,这很复杂。
经过测试和验证——您实际上通过套接字本身为客户端JS文件提供服务。因此,如果您的套接字位于 8000 上,您可以通过 http://localhost:8000/socket.io/socket.io.js
而不是默认的 3000
或其他方式拉动客户端 JS。
谢谢,坚持了好久!以上是关于Socket.IO 教程示例遇到问题。文件不完整或 PEBCAK?的主要内容,如果未能解决你的问题,请参考以下文章