通过 WAMP 服务器使 Socket.IO 从本地主机工作
Making Socket.IO work from localhost through WAMP Server
我对使用 websocket 还很陌生。虽然我在专业编码方面有很多经验,但我从来没有使用套接字来实时更新信息。
我了解 PHP、MySQL、HTML、CSS 和 JS(或 jQuery)。
我的项目已经在 PHP 和 MySQL 开始,但我需要添加一些 "live" 部分。 websocket 应用程序的目标是检查 MySQL 数据库中 Table 的任何更改,并在适用时通知必要的客户端。我不想 "refresh" 经常访问该页面,因为在我看来这是一种草率的做法。
现在,我已经能够按照 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)
教程一运行良好,但我无法在本地主机中连接。我在过去的几个小时里尝试了很多东西,但 Vivaldi (Chrome) 总是 return 这个:
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');
});
感谢任何帮助。
最好的问候,
您的 Socket.IO JavaScript 将在 :3000 端口
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
还要确保您的服务器是 运行。你可以永远使用https://github.com/foreverjs/forever
forever start /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>
我对使用 websocket 还很陌生。虽然我在专业编码方面有很多经验,但我从来没有使用套接字来实时更新信息。
我了解 PHP、MySQL、HTML、CSS 和 JS(或 jQuery)。
我的项目已经在 PHP 和 MySQL 开始,但我需要添加一些 "live" 部分。 websocket 应用程序的目标是检查 MySQL 数据库中 Table 的任何更改,并在适用时通知必要的客户端。我不想 "refresh" 经常访问该页面,因为在我看来这是一种草率的做法。
现在,我已经能够按照 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)教程一运行良好,但我无法在本地主机中连接。我在过去的几个小时里尝试了很多东西,但 Vivaldi (Chrome) 总是 return 这个:
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');
});
感谢任何帮助。 最好的问候,
您的 Socket.IO JavaScript 将在 :3000 端口
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
还要确保您的服务器是 运行。你可以永远使用https://github.com/foreverjs/forever
forever start /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>