搭建物聯網服務器基於nodejs

偶然的機遇,今天接觸了服務器。剛開始不知道服務器爲何物,今天算是瞭解了個大概。

搭建的TCP服務器算一個載體,可以把一些硬件獲取到的數據全部接入網絡,然後通過一個接口發給手機或者上位機。通過特定的IP地址。

我的手機想要操控一盞燈。可以通過服務器。將硬件端連入搭建好的服務器,然後軟件端也連入對應的服務器。當服務器接收到手機發過去的指令後,處理一下再把數據發送給硬件端,硬件段接收到指令 ,實現開關燈。

IP地址:就是給互聯網上每一臺主機(或路由器)的每一個接口分配一個在全世界範圍內是唯一的32位的標識符/

 

http://nodejs.cn/api/net.html#net_server_listening  nodejs API文檔

 

const net = require('net'); //作用類似頭文件
var number;

const server = net.createServer((c) => {
  // 'connection' listener
  console.log('client connected');
  c.on('end', () => {
    console.log('client disconnected');
  });
  c.on('data',function (data){
	 // console.log(data);
	 number = parseInt(data);
	 number+=1;
	 console.log(number);
  }) 
  
  client.push(c);
  c.write('hello\r\n');
});
server.on('error', (err) => {
  console.log('監聽出錯');
});
server.listen(8124, () => {
  console.log('server bound');
});

console.log('server bound123');

第一句話類似於C語言的頭文件。分析一下,代碼執行的時候會最先輸出 server bound123。可能存在延遲還沒有完全成功建立好服務器。然後纔會輸出 sever bound 代表完成  正在監聽端口號的數據。   此時就算代碼執行完成 。  然後一旦有用戶連接,就會分配一個c給用戶。去執行createServer C中的程序。這就有點類似於EDA的always語句。每當有東西改變的時候進入一下。 如果有用戶連接,就會顯示一個 client connected ,然後 發送給用戶hello 。。 一旦用戶發送數據給我 收到的數據是字符型的 利用parseint轉化爲數字型 將這個變量+1 打印在我的窗口上。 ======   

 最基本的用戶連接弄好了 打算稍微升級一下,因爲最後要做的項目是硬件和手機同時相連接,然後將硬件發給我的數據進行處理之後發送給手機。

const net = require('net'); 
var number;
var client=new Array([2]);

const server = net.createServer((c) => {
  // 'connection' listener
  console.log('client connected');
  c.on('end', () => {
    console.log('client disconnected');
  });
  c.on('data',function (data){
	 // console.log(data);
	 number = parseInt(data);
	 number+=1;
	 console.log(number);
	for(var i=0;i<2;i++){
		try{
		client[i].write(number.toString());
				}catch(e){c.write('對方暫時無法應答');  }
		}
  }) 
  
  client.push(c);
  c.write('hello\r\n');
});
server.on('error', (err) => {
  console.log('監聽出錯');
});
server.listen(8124, () => {
  console.log('server bound');
});

console.log('server bound123');

創建了一個數組 存放了2個用戶。一個手機端一個硬件端。   如果只有一個用戶連接的時候 ,可能會出現數組越界情況,因爲有一個是空的找不到。 所以採用了獨特的try函數。 試着去給兩個用戶端發送相同的信息,如果用戶不存在,就轉而發送給存在的用戶 用戶不存在。 這樣便簡單的實現了 2個用戶的交互。    因爲number是數字形式, 發送的都是字符,所以在try發送後面 增加了 number.toString();將數字轉化爲字符。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章