也许这对你也有帮助。我在理解 socket.io 的工作原理时遇到了一些麻烦,所以我尽量简化了一个示例。
我根据此处发布的示例改编了这个示例:http://socket.io/get-started/chat/
首先,从一个空目录开始,并创建一个非常简单的文件,名为 package.json 将以下内容放入其中。
{
"dependencies": {}
}
接下来,在命令行中,使用 npm 安装本示例所需的依赖项
$ npm install --save express socket.io
这可能需要几分钟,具体取决于您的网络连接速度/CPU 等。要检查一切是否按计划进行,您可以再次查看 package.json 文件。 p>
$ cat package.json
{
"dependencies": {
"express": "~4.9.8",
"socket.io": "~1.1.0"
}
}
创建一个名为 server.js 的文件,这显然是我们由节点运行的服务器。将以下代码放入其中:
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
如果您打开网络浏览器,并将其指向您正在运行节点进程的主机名,您应该会看到相同的数字出现在您的浏览器中,以及正在查看同一页面的任何其他连接的浏览器。