【问题标题】:Making Socket.IO work from localhost through WAMP Server通过 WAMP 服务器使 Socket.IO 从 localhost 工作
【发布时间】:2018-07-29 07:15:36
【问题描述】:

我对使用 websocket 很陌生。虽然我作为专业人士在编码方面拥有丰富的经验,但我从来不需要使用套接字来获取实时更新信息。

我熟悉 PHP、MySQL、HTML、CSS 和 JS(或 jQuery)。

我的项目已经在 PHP 和 MySQL 中启动,但我需要添加一些“实时”部分。 websocket 应用程序的目标是检查 MySQL 数据库中表的任何更改,并在适用时通知必要的客户端。我不想经常“刷新”页面,因为在我看来这是一种草率的做法。

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

现在的问题是我想将它集成到我的主网站中,所以我猜我应该能够从我的主网站调用它,但它只是不起作用。

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

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

所以如果我理解正确的话,index.js 应该是我的应用服务器,而 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');
});

感谢您的帮助。 最好的问候,

【问题讨论】:

    标签: javascript php mysql socket.io wamp


    【解决方案1】:
    1. 您的 Socket.IO JavaScript 将位于:3000 端口

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

    永远开始/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>
    

    【讨论】:

    • 今晚我会尝试接受答案,如果它有效。 :) 谢谢。
    • 不幸的是,它不是唯一不起作用的。代码本身和可能的顺序正在影响它的工作。我将编辑您的答案以添加并接受它。
    猜你喜欢
    • 2015-08-12
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 2014-08-04
    • 2011-09-23
    • 2012-08-20
    相关资源
    最近更新 更多