也许这对您也有帮助。我很难理解socket.io的工作原理,所以我尝试尽我所能。
我从此处发布的示例改编了该示例:http : //socket.io/get-started/chat/
首先,从一个空目录开始,然后创建一个名为package.json的非常简单的文件。
{
"dependencies": {}
}
接下来,在命令行上,使用npm安装此示例所需的依赖项
$ npm install --save express socket.io
这可能需要几分钟,具体取决于网络连接/ CPU /等的速度。要检查一切是否按计划进行,可以再次查看package.json文件。
$ cat package.json
{
"dependencies": {
"express": "~4.9.8",
"socket.io": "~1.1.0"
}
}
创建一个名为server.js的文件, 这显然是我们的服务器,由node运行。将以下代码放入其中:
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
//send the index.html file for all requests
res.sendFile(__dirname + '/index.html');
});
http.listen(3001, function(){
console.log('listening on *:3001');
});
//for testing, we're just going to send data to the client every second
setInterval( function() {
/*
our message we want to send to the client: in this case it's just a random
number that we generate on the server
*/
var msg = Math.random();
io.emit('message', msg);
console.log (msg);
}, 1000);
创建最后一个名为index.html的文件,并将以下代码放入其中。
<html>
<head></head>
<body>
<div id="message"></div>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('message', function(msg){
console.log(msg);
document.getElementById("message").innerHTML = msg;
});
</script>
</body>
</html>
现在,您可以测试这个非常简单的示例,并看到一些类似于以下内容的输出:
$ node server.js
listening on *:3001
0.9575486415997148
0.7801907607354224
0.665313188219443
0.8101786421611905
0.890920243691653
如果打开Web浏览器,并将其指向运行节点进程的主机名,则应该在浏览器中看到相同的数字,以及与该页面相同的所有其他连接的浏览器。