Файл сокета NodeJs io не найден - PullRequest
0 голосов
/ 05 марта 2019

Я хочу использовать сокет io на веб-сервере.Когда я работаю на localhost, все работает.Я установил файлы на панель plesk.Узловые модули установлены успешно.Когда я вызываю index.html, я получаю сообщение об ошибке http://example.com:3000/socket.io/socket.io.js не найдено.Где моя ошибка?

index.html

<!DOCTYPE html>
<html ng-app="socket" ng-controller="homeController">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.0/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script src="http://example.com:3000/socket.io/socket.io.js"></script>
<body>
    <div class="container">
        <table class="table table-striped">
            <thead>
                <tr>
                    <th>id</th>
                    <th>Status</th>
                    <th>Category</th>
                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="i in results">
                    <td>{{$index}}</td>
                    <td>{{i.status}}</td>
                    <td>{{i.category}}</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
<script>
    var app = angular.module('socket', []);
    app.controller('homeController', function ($scope) {
        var socket = io.connect('http://example.com:3000');
        socket.on('connected', function (data) {
            socket.emit('ready for data', {});
        });

        socket.on('update', function (data) {           
            $scope.results = data;
            if (!$scope.$$phase) $scope.$apply();
        });  
    });
</script>
</html>

index.js

const Express = require('express');
const Request = require('request');
const http = require('http');
const db = require('./lib/database');
const app = Express();
const server = http.createServer(app);

var io = require('socket.io').listen(server);

io.sockets.on('connection', function (socket) {
    socket.emit('connected', { connected: true });
    socket.on('ready for data', function (data) {
     db.on('notification', function(title) {
         const sql = "select * from public.test";
         db.query(sql, (err, result) => {
          if (err) res.status(err.code).json({code: err.code, message: err.message}).end();
          socket.emit('update', result.rows);
         })
     });
    });
});

server.listen(3000);

1 Ответ

0 голосов
/ 05 марта 2019

1- express.static

Если вы хотите использовать статический файл, такой как JavaScript, CSS, изображение и т. Д., Вы можете использовать встроенную функцию промежуточного программного обеспечения express.static.

Сигнатура функции:

express.static(root, [options])

Корневой аргумент указывает корневой каталог, из которого будут обслуживаться статические активы.Для получения дополнительной информации об аргументе параметров см. Express.static.

Например, используйте следующий код для обслуживания изображений, файлов CSS и файлов JavaScript в каталоге с именем public:

app.use(express.static('public'))

Теперь вы можете загрузить файлы, находящиеся в общедоступном каталоге:

http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html

2-CDN В качестве альтернативы вы можете использовать CDN для socket.io.js или других библиотек, таких как jquery,загрузчик и т. д.

CDN можно получить здесь socket.io cdn

...