NodeJS + Socket.io:在本地(Windows)上工作但不在生产上的简单示例(Centos)

时间:2016-08-04 04:48:41

标签: node.js socket.io

我正在尝试nodejs和socket.io的简单示例。

它在本地(windows)上的工作

但不从事生产(CentOs 6.8)

我需要在生产方面做些什么改变?

我应该把app.js放在哪里?

(在本地我把app.js放在我的项目文件夹中 但在生产中我把它放在根文件夹上*我把它放在root上因为节点app.js无法在项目文件夹上运行)

浏览器出错(循环直到我关闭浏览器)

http://www.domain.com/socket.io/EIO=3&transport=polling&t=1470293560203-1 404(未找到) http://www.domain.com/socket.io/EIO=3&transport=polling&t=1470293560203-2 404(未找到)

app.js

const util  = require('util');
const app   = require('express')();
const http  = require('http').Server(app);
const io    = require('socket.io')(http);
const redis = require("redis");

const host = process.env.HOST || '0.0.0.0';
const port = process.env.PORT || 9090;

http.listen(port, host);
util.log('Listening at http://' + host + ':' + port);

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

  // util.log("connect");

  var redisClient = redis.createClient();

  redisClient.subscribe('notification');

  redisClient.on('message', function (channel, message) {
    util.log("New message in queue " + message + "channel");

    message = JSON.parse(message);
    // util.log(message.data.data.id);
    socket.emit(channel, message.data);
  });


  socket.on('disconnect', function () {
    redisClient.quit();
  });

});

的index.html

<div id="notifications"></div>

<script src="//cdn.socket.io/socket.io-1.3.5.js"></script>
<script>
  var socket = io('http://localhost:9090');

  socket.on('message', function (msg) {
    console.log(msg);

    var notif = document.getElementById('notifications');

    var div = document.createElement('div');

    div.innerHTML = msg.name + '('+ msg.email +') registered';

    notif.appendChild(div);
  });
</script>

1 个答案:

答案 0 :(得分:0)

所以我解决了.. 这只是我的坏事。

首先我确保正确安装express,redis,socket.io。

然后在index.html http://localhost:9090必须更改为http://domain.com:9090