Node.js和socket.io不适用于Cloud9 IDE

etl*_*lap 5 node.js socket.io cloud9-ide

有没有人有经验让Node.js和socket.io在Cloud9 IDE上工作?

"示例(带有Socket.io的NodeJS)"(位于https://c9.io/site/blog/2013/05/native-websockets-support/)不起作用.

首先,服务器(https://c9.io/etlolap/webapp,/test.js)抛出错误,除非我修复如下.我在test.js处于活动选项卡时单击了Run按钮.

var 
  socketIo = require('socket.io'),
  io = socketIo.listen(Number(process.env.PORT));
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
  console.log(data);
  });
});
Run Code Online (Sandbox Code Playgroud)

然后,我的客户端(https://c9.io/etlolap/webapp,/test.html)仍然无法连接.当test.html处于活动选项卡时,我单击了预览按钮.

<!doctype html>
<html>
  <head>
    <script src="/socket.io/socket.io.js"></script>
    <script>
      var socket = io.connect('https://webapp-c9-etlolap.c9.io');
      socket.on('news', function (data) {
        console.log(data);
        socket.emit('my other event', { my: 'data' });
      });
    </script>
  </head>
  <body>
    Loading...
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

并在下面收到错误消息.

无法加载资源:服务器响应状态为404 ---(未找到)https://c9.io/socket.io/socket.io.js

未捕获的ReferenceError:未定义io --- test.html:6

Mat*_*orf 10

1.步骤

1.1)Runserver.js

在此输入图像描述

云9控制台出现:

在此输入图像描述

1.2)点击Previewindex.html

在此输入图像描述

1.3)然后在IDE的右侧打开一个窗口.您可以点击导航栏中间的按钮,也可以将网址复制并粘贴到新的浏览器窗口中.

在此输入图像描述

1.4)套接字通信正在工作!

在此输入图像描述

在此输入图像描述



2.先决条件

2.1)节点模块socket.io

点击F6View -> Console安装socket.io.

在此输入图像描述

2.2)来自socket.io的客户端JavaScript

由于我没有找到下载它的官方链接,我创建了一个GitHubGist.

socket.io.js



3.代码

server.js

// module dependencies
var http = require("http"),
    sio  = require("socket.io");

// create http server
var server = http.createServer().listen(process.env.PORT, process.env.IP),

// create socket server
io = sio.listen(server);

// set socket.io debugging
io.set('log level', 1);

io.sockets.on('connection', function (socket) {

  socket.emit('news', { message: 'Hello world!' });

  socket.on('my other event', function (data) {
    console.log(data.message);
  });

});
Run Code Online (Sandbox Code Playgroud)


的index.html

<!DOCTYPE html>
<html>

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

        var socket = io.connect("https://demo-project-c9-matthiasholdorf.c9.io");

        socket.on("news", function(data) {
            console.log(data.message);
        });

        socket.emit("my other event", { message : "client emit" } );

        </script>

</html>
Run Code Online (Sandbox Code Playgroud)


etl*_*lap 2

感谢 damphat 和 Matthias 的反馈。经过多次失败的尝试,终于我自己找到了解决方案。在 Cloud9 IDE 上,客户端(此处为 test.html)中的典型行必须更改为:

 <script src="/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

 <script src="https://webapp-c9-etlolap.c9.io/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

前缀是您的 Cloud9 项目 URL 的 URL。通过更改这一行,我的示例起作用了。