让教程 SocketIO 工作
Getting the tutorial SocketIO to work
我正在尝试从在我的域上工作的 SocketIO 获取示例。
我已经通过命令行安装了 Node.JS 以及 ExpressJS 和 SocketIO。
现在,我正在尝试将其添加到 运行。在服务器端我有:
(位于/nodejs,与/[=51=同级],不在里面)
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
然后在客户端我有:
(位于/public_html/socketio.htm)
<!DOCTYPE html>
<head>
<title>Socket IO Test</title>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<style type='text/css'>
* {font-family: 'Trebuchet MS';}
</style>
</head>
<body>
<h1>Socket IO Test</h1>
<script>
var socket = io.connect('http://localhost/');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</body>
</html>
我不明白以下问题:
1. 我的 node.js 运行 来自哪里重要吗?我应该把它放在 /public_html 里面吗?
2. 我无法在端口 80 上列出,我得到了正在使用的错误地址。在我看来,这是用于 http 流量的通用端口,为什么 SocketIO 使用它?还是因为我 运行 在域外使用我的 nodejs?我应该创建一个子域并将我的 nodejs 文件(包括 /node_modules)移动到一个子域吗?
3. 我可以使用什么端口?我尝试了 3000,然后将 http://localhost/
更改为 http://localhost:3000
,但这没有用。
4. 我不是 运行ning 在本地机器上,而是在我的域上。我是否需要更改 http://localhost/
以反映这一点?又名,http://domain.com
?
任何帮助将不胜感激!!
服务器端..
var app = require('express')();
var express = require("express")
var server = require('http').Server(app);
var io = require('socket.io')(server);
app.use(express.static(__dirname + '/nodejs'));
server.listen(8000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
客户端..
<!DOCTYPE html>
<head>
<title>Socket IO Test</title>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<style type='text/css'>
* {font-family: 'Trebuchet MS';}
</style>
</head>
<body>
<h1>Socket IO Test</h1>
<script>
var socket = io.connect('http://localhost:8000/');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</body>
</html>
并使用如下目录结构..
- expressocket.js
nodejs/
socketio.htm
我正在尝试从在我的域上工作的 SocketIO 获取示例。
我已经通过命令行安装了 Node.JS 以及 ExpressJS 和 SocketIO。
现在,我正在尝试将其添加到 运行。在服务器端我有:
(位于/nodejs,与/[=51=同级],不在里面)
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(80);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
然后在客户端我有:
(位于/public_html/socketio.htm)
<!DOCTYPE html>
<head>
<title>Socket IO Test</title>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<style type='text/css'>
* {font-family: 'Trebuchet MS';}
</style>
</head>
<body>
<h1>Socket IO Test</h1>
<script>
var socket = io.connect('http://localhost/');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</body>
</html>
我不明白以下问题:
1. 我的 node.js 运行 来自哪里重要吗?我应该把它放在 /public_html 里面吗?
2. 我无法在端口 80 上列出,我得到了正在使用的错误地址。在我看来,这是用于 http 流量的通用端口,为什么 SocketIO 使用它?还是因为我 运行 在域外使用我的 nodejs?我应该创建一个子域并将我的 nodejs 文件(包括 /node_modules)移动到一个子域吗?
3. 我可以使用什么端口?我尝试了 3000,然后将 http://localhost/
更改为 http://localhost:3000
,但这没有用。
4. 我不是 运行ning 在本地机器上,而是在我的域上。我是否需要更改 http://localhost/
以反映这一点?又名,http://domain.com
?
任何帮助将不胜感激!!
服务器端..
var app = require('express')();
var express = require("express")
var server = require('http').Server(app);
var io = require('socket.io')(server);
app.use(express.static(__dirname + '/nodejs'));
server.listen(8000);
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
客户端..
<!DOCTYPE html>
<head>
<title>Socket IO Test</title>
<script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
<style type='text/css'>
* {font-family: 'Trebuchet MS';}
</style>
</head>
<body>
<h1>Socket IO Test</h1>
<script>
var socket = io.connect('http://localhost:8000/');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
</body>
</html>
并使用如下目录结构..
- expressocket.js
nodejs/
socketio.htm