让教程SocketIO工作

时间:2015-02-24 00:39:22

标签: node.js express socket.io

我试图从SocketIO获取我的域名的示例。

我通过命令行设法安装了Node.JS以及ExpressJS和SocketIO。

现在,我正试图让它运行。在服务器端,我有:

(位于/ nodejs,与/ public_html处于同一级别,不在其中)

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. 我没有在本地计算机上运行,​​而是在我的域上运行。我是否需要更改http://localhost/才能反映出来?阿卡,http://domain.com

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:1)

服务器端..

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