真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

node實(shí)現(xiàn)socket鏈接與GPRS進(jìn)行通信

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)node實(shí)現(xiàn)socket鏈接與GPRS進(jìn)行通信,文章內(nèi)容豐富且以專(zhuān)業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了新林免費(fèi)建站歡迎大家使用!

1、前端部分

node實(shí)現(xiàn)socket鏈接與GPRS進(jìn)行通信

前端部分實(shí)現(xiàn)主要是提供4個(gè)按鈕,向后臺(tái)接口請(qǐng)求對(duì)應(yīng)的數(shù)據(jù),例如:點(diǎn)擊A點(diǎn)擊前進(jìn),就向后臺(tái)請(qǐng)求http://XXXX:4000/djxt/move接口并傳輸數(shù)據(jù),可以下載完整項(xiàng)目運(yùn)行后,通過(guò)127.0.0.1:3002/djxt進(jìn)行訪問(wèn),頁(yè)面html代碼主要部分如下:

 
   A 前進(jìn)

   A 后退

   B 前進(jìn)
   
   B 后退
  

發(fā)送數(shù)據(jù)給后臺(tái)部分代碼如下:

 // A 前進(jìn)
     goA (id){
      axios.post('/djxt/move', { id })
      .then( (response)=> {
       console.log(response);
       if( response.data.success ){
        this.alertDialog.content = '操作成功';
        this.alertDialog.status = true;
       }else{
        this.alertDialog.content = '操作失敗了';
        this.alertDialog.status = true;
       }
      })
      .catch( (error)=> {
       console.log(error);
        this.alertDialog.content = '操作失敗了';
        this.alertDialog.status = true;
      });
     }

2、后臺(tái)實(shí)現(xiàn)

由于用的是node技術(shù)棧,當(dāng)初使用的是scoket.io來(lái)進(jìn)行scoket鏈接的,但是在后面的開(kāi)發(fā)中發(fā)現(xiàn)該方法需要有一個(gè)事件去觸發(fā)提交數(shù)據(jù),在客戶端也需要有事件進(jìn)行監(jiān)聽(tīng),不適合在與GPRS進(jìn)行通信,最后無(wú)奈的放棄了。后面采用了node的NET模塊進(jìn)行通信,該模塊只要調(diào)用write(data)就可以發(fā)送綁定端口的數(shù)據(jù)。相對(duì)比較簡(jiǎn)單??梢詤⒖家幌耼odejs.org/dist/latest… 看不懂英文可以找中文版的。

net的連接可以寫(xiě)在www文件或是app.js文件,看自己需求。在該項(xiàng)目中暴露出來(lái)接口127.0.0.1:3004,代碼如下:

//socket
var net = require('net');
// 服務(wù)器IP
var HOST = '127.0.0.1';
// 端口號(hào)
var PORT = 3004;

// 創(chuàng)建一個(gè)TCP服務(wù)器實(shí)例,調(diào)用listen函數(shù)開(kāi)始監(jiān)聽(tīng)指定端口
// 傳入net.createServer()的回調(diào)函數(shù)將作為”connection“事件的處理函數(shù)
// 在每一個(gè)“connection”事件中,該回調(diào)函數(shù)接收到的socket對(duì)象是唯一的

net.createServer(function(sock) {
// 全局sock,可以在其他地方調(diào)用
global.sock = sock
// 獲得了一個(gè)socket連接,將客戶端輸出來(lái)
console.log('CONNECTED: ' +
  sock.remoteAddress + ':' + sock.remotePort);

// 為這個(gè)socket實(shí)例添加一個(gè)"data"事件處理函數(shù),接收客戶端數(shù)據(jù)
sock.on('data', function(data) {
  console.log('DATA ' + sock.remoteAddress + ': ' + data);
  // 回發(fā)該數(shù)據(jù),客戶端將收到來(lái)自服務(wù)端的數(shù)據(jù),實(shí)現(xiàn)ECHO服務(wù)器
  // sock.write('' + data );
});

// 為這個(gè)socket實(shí)例添加一個(gè)"close"事件處理函數(shù)
sock.on('close', function(data) {
  console.log('CLOSED: ' +
    sock.remoteAddress + ' ' + sock.remotePort);
});

}).listen(PORT, HOST);

代碼中的HOST 是你需要暴露給GPRS模塊的ip,PORT是端口。net.createServer創(chuàng)建服務(wù)后,它回調(diào)里面的sock可以用來(lái)做一些監(jiān)聽(tīng),例如客戶端返回?cái)?shù)據(jù)sock.on('data', function(data) {})。在開(kāi)發(fā)過(guò)程中遇到一個(gè)問(wèn)題就是HOST在本地是用127.0.0.1是可以進(jìn)行訪問(wèn)的,但是到了云服務(wù)后,會(huì)出現(xiàn)端口訪問(wèn)不了。解決辦法是把HOST改為你自己服務(wù)器的內(nèi)網(wǎng)ip即可進(jìn)行訪問(wèn)。global.sock = sock這個(gè)主要是暴露全局的sock,可以在其他需要地方進(jìn)行調(diào)用,切記要暴露出去。

服務(wù)端處理前端發(fā)送過(guò)來(lái)的數(shù)據(jù),發(fā)送到GPRS模塊。該項(xiàng)目中前端訪問(wèn)的路由為/move,進(jìn)入這個(gè)路由后進(jìn)行判斷,再把值轉(zhuǎn)發(fā)給GPRS,這里關(guān)鍵點(diǎn)是利用全局的Sock的sock.write()來(lái)發(fā)送到客戶端。代碼如下

//前端接口
router.post('/move', async (ctx, next) => {
 let params = ctx.request.body;
 
 // console.log('ctx.state: ', global.sock)
 // console.log('ctx.state2222: ', sock)
 console.log('前端接口: ', params)
 if( !sock ){
  ctx.body = {
   data: params,
   success: false,
   msg: 'socket不存在'
  }
 }else{
  sock.write( params.id );

  ctx.body = {
   data: params,
   success: true,
   msg: ''
  }
 }
})

上述就是小編為大家分享的node實(shí)現(xiàn)socket鏈接與GPRS進(jìn)行通信了,如果剛好有類(lèi)似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章名稱:node實(shí)現(xiàn)socket鏈接與GPRS進(jìn)行通信
標(biāo)題來(lái)源:http://weahome.cn/article/johdgs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部