使Socket.IO从localhost通过WAMP Server工作

时间:2018-02-19 04:42:25

标签: javascript php mysql socket.io wamp

我是使用websocket的新手。虽然我在专业编码方面有很多经验,但我从来没有使用套接字来获取实时更新信息。

我了解PHP,MySQL,HTML,CSS和JS(或jQuery)。

我的项目已经在PHP和MySQL中启动了,但我需要添加一些" live"部分。 websocket应用程序的目标是检查MySQL数据库中表的任何更改,并通知必要的客户端(如果适用)。我没想过"刷新"这个页面经常出现,因为在我看来,这是一种草率的做事。

现在,我已经能够遵循Socket.IO的几个教程了,我在官方网站上的聊天示例工作正常。 (使用Express,Socket.IO和Node.JS)

现在的问题是我想将它整合到我的主网站中,所以我猜我应该可以从我的主网站上调用它但它只是不起作用。

在寻找解决方案的时间后,我听说层次结构非常重要,所以这是我的:

/www/
/www/Index.php
/www/LiveUpdate/
/www/LiveUpdate/index.js

所以,如果我明白这一点,index.js应该是我的app服务器,而index.php是我的网站。

现在一切都是默认的,所以我访问http://localhost/的网站。 我在http://localhost:3000/访问了教程一(/LiveUpdate/Index.html)。

本教程非常合适,但我可以在localhost中连接。在过去的几个小时里我尝试过很多东西,但Vivaldi(Chrome)总是回复这个:

POST http://localhost/LiveUpdate/socket.io/?EIO=3&transport=polling&t=M6iMHf6 404 (Not Found)

在我的index.php中,我有:(制定了重要代码的版本)

<script src="/LiveUpdate/socket.io/socket.io.js"></script>
<script>
    var socket = io('http://localhost/:3000', {path: "/LiveUpdate/socket.io"});
</script>

并在index.js中:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);

//app.get('/', function(req, res){
//  res.sendFile(__dirname + '/index.html');
//});

io.on('connection', function(socket){
  console.log('a user connected');
});

http.listen(3000, function(){
  console.log('listening on *:3000');
});

我感谢任何帮助。 最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

  1. 您的Socket.IO JavaScript将打开:3000端口

    <script src="http://localhost:3000/socket.io/socket.io.js"></script>
    
  2. 还要确保您的服务器正在运行。您可以永久使用https://github.com/foreverjs/forever

  3.   

    永远开始/path/index.js

    它像守护进程一样工作

    编辑:

    <小时/> 对于完整的工作index.js:

    var express = require('express'),
        http = require('http');
    var app = express();
    var server = http.createServer(app);
    var io = require('socket.io').listen(server);
    
    server.listen(3000);
    
    io.on('connection', function(socket){
      console.log('a user connected');
    });
    

    在您的网页中:

    <script src="http://localhost:3000/socket.io/socket.io.js"></script>
    <script>
        $(function () {
            var socket = io.connect('http://localhost:3000');
        }
    </script>