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】:

改用&lt;script src="/socket.io/socket.io.js"&gt;&lt;/script&gt;

【讨论】:

我可能应该提到我从“文档提供”代码切换的原因是因为那也不起作用。我没有尝试的是"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?的主要内容,如果未能解决你的问题,请参考以下文章

React Native socket.io 一直在说

socket.io 示例:不工作

与 .Net 兼容的 Socket.IO 示例

带有 Socket.io 和 Node 的动态房间

断开连接时销毁socket.io连接

后端使用 Swift 和 Node.js 的 Socket.io 示例