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
点击F6或View -> Console安装socket.io.

2.2)来自socket.io的客户端JavaScript
由于我没有找到下载它的官方链接,我创建了一个GitHubGist.
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)
感谢 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。通过更改这一行,我的示例起作用了。
| 归档时间: |
|
| 查看次数: |
9209 次 |
| 最近记录: |