【发布时间】:2012-01-24 16:23:44
【问题描述】:
我有一些关于在 PHP 中使用 socket IO 等问题,我是 nodejs/socket io 的新手,所以我知道的很少,我在过去几天才开始使用它,我要说到重点了我将在我的网站上实现它(到目前为止,我刚刚构建了一些小测试示例)。
问题:目前我必须将端口添加到我的本地主机才能查看它并让它工作,显然当它是一个实时网站时我不能拥有这个,当我使用 php 时我也不能这样做页面(只是一直在用 html 做例子)如果我为我的套接字 io 服务器使用端口 4000,我必须去:localhost:4000,但是我需要能够去:localhost:8888/mysitefolder(8888 是我的 MAMP、php 和所有东西的端口)我已经看到人们已经解决了这个问题,但我无法让它为我自己工作。
这是我的代码:
聊天.js
var app = require('express').createServer(),
io = require('socket.io').listen(app);
app.listen(4000);
var users = [];
app.get('/', function (req, res) {
res.sendfile(__dirname + '/index.html');
});
io.sockets.on('connection', function (socket) {
socket.emit('connected');
socket.on('userID', function (userID) {
users.push(userID);
});
socket.on('message', function (message) {
socket.broadcast.emit('message-response', { data: message});
});
});
index.html
<title>Testing</title>
<script src="/socket.io/socket.io.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>
function mktime(){
var newDate = new Date;
return newDate.getTime();
}
function appendMessage(data)
{
$("body").append(data+"<br />");
}
var socket = io.connect('http://localhost:4000');
socket.on('connected', function () {
//select id from database in real environment
socket.emit("userID", mktime());
});
socket.on('message-response', function (message) {
appendMessage(message.data);
});
$(document).ready(function(){
$('#input').keypress(function(event) {
if (event.keyCode != 13) return;
var msg = $("#input").val();
if (msg) {
socket.emit('message', msg );
appendMessage(msg);
$("#input").val('').focus();
}
});
});
</script>
<body>
<input type="text" id="input"><br>
</body>
【问题讨论】:
-
“我需要能够访问:localhost:8888/mysitefolder”是什么意思?您需要做的就是正确引用 js 文件,例如:“localhost:4000/socket.io/socket.io.js”,就是这样。您甚至不需要 Express 服务器,您可以使用 JS 代码提供索引文件。
-
嗯 localhost:8888 是 MAMP 运行的地方,对于 php 和所有内容,mysitefolder 只是其中用于 php 文件工作的文件夹。另外,我要在我的两个文件中更改什么?我只是快速尝试并出现错误。 (就像我说的,我是新手,所以我不确定一切是如何工作的)
-
没关系,我搞定了。谢谢。
标签: php jquery apache node.js socket.io