【发布时间】:2019-03-05 18:58:02
【问题描述】:
我想在 web 服务器上使用 socket io。当我在 localhost 上工作时,一切正常。我在 plesk 面板上安装了文件。节点模块安装成功。当我调用 index.html 时,我得到一个错误是 http://example.com:3000/socket.io/socket.io.js not found。我的错在哪里?
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);
【问题讨论】: