自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Vue.js 如何使用Socket.IO ?

開發(fā) 前端
對(duì)前端而言,來實(shí)現(xiàn)瀏覽器和服務(wù)器實(shí)時(shí)通信,最好的選擇就是Socket.IO庫,能夠快速的實(shí)現(xiàn)兩端實(shí)時(shí)通信功能。

 在很多需求業(yè)務(wù)中,都需要瀏覽器和服務(wù)器實(shí)時(shí)通信來實(shí)現(xiàn)功能,比如:掃碼登錄(掃碼后,手機(jī)確認(rèn)登錄,PC網(wǎng)頁完成登錄并跳轉(zhuǎn))、訂單語言提醒等,這些都是建立在兩端實(shí)時(shí)通信的基礎(chǔ)上的。對(duì)前端而言,來實(shí)現(xiàn)瀏覽器和服務(wù)器實(shí)時(shí)通信,最好的選擇就是Socket.IO庫,能夠快速的實(shí)現(xiàn)兩端實(shí)時(shí)通信功能。

 

1、什么是 Socket.IO?

Socket.IO是一個(gè)WebSocket庫,可以在瀏覽器和服務(wù)器之間實(shí)現(xiàn)實(shí)時(shí),雙向和基于事件的通信。它包括:Node.js服務(wù)器庫、瀏覽器的Javascript客戶端庫。它會(huì)自動(dòng)根據(jù)瀏覽器從WebSocket、AJAX長(zhǎng)輪詢、Iframe流等等各種方式中選擇最佳的方式來實(shí)現(xiàn)網(wǎng)絡(luò)實(shí)時(shí)應(yīng)用,非常方便和人性化,而且支持的瀏覽器最低達(dá)IE5.5

2、Socket.IO 主要特點(diǎn)

[[271942]] 

(1)、支持瀏覽器/Nodejs環(huán)境 (2)、支持雙向通信 (3)、API簡(jiǎn)單易用 (4)、支持二進(jìn)制傳輸 (5)、減少傳輸數(shù)據(jù)量

3、Vue.js 中 Socket.IO的使用

 

(1)客戶端

 

  1. npm install vue-socket.io --save 

main.js添加下列代碼 

  1. import VueSocketIO from 'vue-socket.io'  
  2. Vue.use(new VueSocketIO({  
  3. debug: true,  
  4. // 服務(wù)器端地址  
  5. connection: 'http://localhost:3000',  
  6. vuex: {  
  7.  
  8. }))  

發(fā)送消息和監(jiān)聽消息 

  1. //發(fā)送信息給服務(wù)端  
  2. this.$socket.emit('login',{  
  3. username: 'username',  
  4. password: 'password'  
  5. });  
  6. //接收服務(wù)端的信息  
  7. this.sockets.subscribe('relogin', (data) => {  
  8. console.log(data)  
  9. })  

(2)服務(wù)端

 

服務(wù)端,我們基于express搭建node服務(wù)器。 

  1. npm install --save express  
  2. npm install --save socket.io  

index.js文件 

  1. var app = require('express')();  
  2. var http = require('http').Server(app);  
  3. var io = require('socket.io')(http);  
  4. app.get('/', function(req, res){  
  5. res.send('  
  6. 你好web秀 
  7. '); 
  8. });  
  9. io.on('connection',function(socket) {  
  10. //接收數(shù)據(jù)  
  11. socket.on('login', function (obj) {  
  12. console.log(obj.username);  
  13. // 發(fā)送數(shù)據(jù)  
  14. socket.emit('relogin', {  
  15. msg: `你好${obj.username}`,  
  16. code: 200  
  17. });  
  18. });  
  19. });  
  20. http.listen(3000, function(){  
  21. console.log('listening on *:3000');  
  22. });  

然后啟動(dòng)服務(wù)端服務(wù) 

  1. node index.js 

客戶端即可查看效果。

4、Socket.IO有哪些事件

  

  1. io.on('connect', onConnect);  
  2. function onConnect(socket){  
  3. // 發(fā)送給當(dāng)前客戶端  
  4. socket.emit(  
  5. 'hello',  
  6. 'can you hear me?',  
  7. 1,  
  8. 2,  
  9. 'abc'  
  10. );  
  11. // 發(fā)送給所有客戶端,除了發(fā)送者  
  12. socket.broadcast.emit(  
  13. 'broadcast',  
  14. 'hello friends!'  
  15. );  
  16. // 發(fā)送給同在 'game' 房間的所有客戶端,除了發(fā)送者  
  17. socket.to('game').emit(  
  18. 'nice game',  
  19. "let's play a game"  
  20. );  
  21. // 發(fā)送給同在 'game1' 或 'game2' 房間的所有客戶端,除了發(fā)送者  
  22. socket.to('game1').to('game2').emit(  
  23. 'nice game',  
  24. "let's play a game (too)"  
  25. );  
  26. // 發(fā)送給同在 'game' 房間的所有客戶端,包括發(fā)送者  
  27. io.in('game').emit(  
  28. 'big-announcement',  
  29. 'the game will start soon'  
  30. );  
  31. // 發(fā)送給同在 'myNamespace' 命名空間下的所有客戶端,包括發(fā)送者  
  32. io.of('myNamespace').emit(  
  33. 'bigger-announcement',  
  34. 'the tournament will start soon'  
  35. );  
  36. // 發(fā)送給指定 socketid 的客戶端(私密消息)  
  37. socket.to().emit(  
  38. 'hey',  
  39. 'I just met you'  
  40. );  
  41. // 包含回執(zhí)的消息  
  42. socket.emit(  
  43. 'question',  
  44. 'do you think so?', 
  45.  function (answer) {}  
  46. );  
  47. // 不壓縮,直接發(fā)送  
  48. socket.compress(false).emit(  
  49. 'uncompressed',  
  50. "that's rough"  
  51. );  
  52. // 如果客戶端還不能接收消息,那么消息可能丟失  
  53. socket.volatile.emit(  
  54. 'maybe',  
  55. 'do you really need it?'  
  56. );  
  57. // 發(fā)送給當(dāng)前 node 實(shí)例下的所有客戶端(在使用多個(gè) node 實(shí)例的情況下)  
  58. io.local.emit(  
  59. 'hi',  
  60. 'my lovely babies'  
  61. );  
  62. };  

5、Socket.IO全家桶

 

責(zé)任編輯:龐桂玉 來源: 中國開源
相關(guān)推薦

2022-06-13 07:33:57

socketReact組件

2017-09-05 15:30:00

JavascriptSocket.ioNode.js

2017-07-14 10:10:08

Vue.jsMixin

2013-10-23 17:17:31

Node.jsdoT

2014-07-22 10:29:04

背包算法coffee

2021-04-17 18:24:04

Vue.js嵌套路由前端

2021-05-08 06:14:28

Vue.js片段開發(fā)

2016-11-22 13:25:28

Apache Spar大數(shù)據(jù)

2018-04-04 10:32:13

前端JavascriptVue.js

2017-07-04 17:55:37

Vue.js插件開發(fā)

2016-11-04 19:58:39

vue.js

2025-02-27 09:28:27

2015-07-15 12:53:05

Node.jsSocket.io遠(yuǎn)程控制

2014-06-10 13:54:05

Node.jsSocket.IOWebSocket

2022-01-19 22:18:56

Vue.jsVue SPA開發(fā)

2024-05-13 08:04:26

Vue.jsWeb應(yīng)用程序

2017-07-11 18:00:21

vue.js數(shù)據(jù)組件

2017-07-20 11:18:22

Vue.jsMVVMMVC

2021-01-22 11:47:27

Vue.js響應(yīng)式代碼

2016-11-01 19:10:33

vue.js前端前端框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)