让教程 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