我正在尝试使用Node js创建一个简单的聊天应用程序。我使用的是视窗操作系统。作为本地服务器,我正在使用Xampp。我已经安装了节点。我还使用 package.json 安装了 socket.io。package.json 中的代码如下所示。
{
"name":"chat",
"version":"0.0.1",
"private":"true",
"dependencies":{
"socket.io":"0.9.16",
"express":"3.4.0"
}
}
然后我为服务器编写了代码。节点服务器在端口 1337 中运行。服务器的代码如下。
var io = require('socket.io').listen(1337);
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
然后当我运行它时,它正在运行。然后,我将客户端的代码编写在index.php文件中。客户端的代码如下。
<!DOCTYPE html>
<html>
<head>
<title>Chat app.</title>
</head>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="/node:1337/socket.io/socket.io.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var socket = io.connect('http: // localhost / node : 1337');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
});
</script>
</body>
</html>
但是当我尝试使用浏览器运行它时,我在控制台中看到的只是禁止访问。我的所有文件(包括node_modules都保存在C:xampphtdocsnode
中。
您正在使用的代码是从 socket.io 主页复制的,它仅用作示例,但它实际上不是工作代码,因为 socket.io 脚本未绑定到任何服务器实例。
Socket.io 不是服务器。它只是一个用于很好地处理 Websocket 的库。为了使用 socket.io 您必须要求HTTP或Express并创建一个服务器实例。然后,您必须将服务器实例与 socket.io 绑定。
有关如何启动和运行服务器 socket.io 的工作实现,您必须查看"如何使用"页面。他们有这些不错的代码示例,具体取决于您正在运行的实现(如果是HTTP或其他东西(。
所以划伤整个 Xampp 服务器的想法。Node具有自己的内置服务器功能,这就是您要使用的。
这是一个工作示例(来自 socket.io 网站(,说明 Socket.io 如何与HTTP一起使用。在此代码片段中,还会创建服务器(并且正在侦听端口 80(,因此您不必担心:
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(80);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
服务器启动并运行后,您可以通过在浏览器中键入localhost:80
来访问它。