บางทีนี่อาจช่วยคุณได้เช่นกัน ฉันมีปัญหาในการพันศีรษะรอบ ๆ วิธีการทำงานของ 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 ซึ่งจะเห็นได้ชัดว่าเซิร์ฟเวอร์ของเราทำงานโดยโหนด ใส่รหัสต่อไปนี้ลงไป:
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
หากคุณเปิดเว็บเบราว์เซอร์และชี้ไปที่ชื่อโฮสต์ที่คุณกำลังเรียกใช้กระบวนการโหนดคุณจะเห็นตัวเลขเดียวกันปรากฏในเบราว์เซอร์ของคุณพร้อมกับเบราว์เซอร์ที่เชื่อมต่ออื่น ๆ ที่กำลังดูหน้าเดียวกัน