node.js中使用socket.io的方法
使用socket.io的使用創(chuàng)建一個socket.io服務(wù)器即可.但是該服務(wù)器依賴于一個已經(jīng)創(chuàng)建的http服務(wù)器.
在http服務(wù)器運(yùn)行之后,使用listen方法為該http服務(wù)器附加一個socket.io服務(wù)器.
var sio=require("scoket.io");
var socket=sio.listen(server);
socket就是在server基礎(chǔ)上創(chuàng)建的一個socket.io服務(wù)器.
當(dāng)客戶端與服務(wù)器端建立連接時,觸發(fā)socket.io服務(wù)的connection事件.
socket.on("connection",function(socket){
});
回調(diào)函數(shù)中的socket參數(shù)是服務(wù)器端與客戶端建立連接的socket端口對象.
當(dāng)接收到客戶端發(fā)送的消息時,發(fā)出socket端口對象的message事件.
socket.on("message",function(msg){
});
回調(diào)函數(shù)的參數(shù)是客戶端發(fā)送的消息.
可以使用socket.send(msg)向客戶端發(fā)送一個消息.
當(dāng)服務(wù)器端可客戶端的連接斷開時觸發(fā)disconnect事件.
socket.on("disconnect",funciton(){
});
該回調(diào)函數(shù)不適用任何參數(shù).
服務(wù)器端server.js代碼:
var http=require("http");
var sio=require("socket.io");
var fs=require("fs");
var server=http.createServer(function (req,res) {
res.writeHead(200,{"Content-type":"text/html"});
res.end(fs.readFileSync("./index.html"));
});
server.listen(1337);
var socket=sio.listen(server);
socket.on("connection", function (socket) {
console.log("客戶端建立連接");
socket.send("你好");
socket.on("message", function (msg) {
console.log("接收到一個消息:"+msg);
});
socket.on("disconnect", function () {
console.log("客戶端斷開連接.");
});
});
創(chuàng)建客戶端index.html代碼:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket=io.connect();
socket.on("message", function (data) {
console.log(data);
socket.send("消息已接受到.")
});
socket.on("disconnect", function () {
console.log("服務(wù)器端斷開連接.");
});
</script>
</head>
<body>
</body>
</html>
這段代碼:/socket.io/socket.io.js有服務(wù)器端socket.io類庫提供,不需要再客戶端實(shí)際放置一個socket.io.js文件.
在腳本文件中,首先使用io.connect()方法連接服務(wù)器端socket.io服務(wù)器.
該方法返回一個與服務(wù)器端建立連接的客戶端socket端口對象.
當(dāng)接受到服務(wù)器端發(fā)送的消息時,觸發(fā)客戶端socket端口對象的message事件.
socket.on("message",function(msg){
});
msg是服務(wù)器端發(fā)送的數(shù)據(jù);
也可以使用客戶端的socket對象的send()方法向服務(wù)器端發(fā)送數(shù)據(jù).
socket.send(msg);
當(dāng)服務(wù)器端斷開連接時,觸發(fā)客戶端socket端口對象的disconnect事件,
socket.on("disconnect",function(){
})
這個回調(diào)函數(shù)不使用任何參數(shù).
注意:
客戶端的消息機(jī)制與服務(wù)器端的消息處理機(jī)制是完全一致的.因?yàn)閟ocket.io確保客戶端與服務(wù)器端共享相同的API.
運(yùn)行后的結(jié)果:
當(dāng)關(guān)閉瀏覽器是,就斷開了與服務(wù)器的連接,此時服務(wù)器端觸發(fā)disconnect事件,客戶端斷開連接.
相關(guān)文章
nodejs配置express服務(wù)器運(yùn)行自動打開瀏覽器詳細(xì)步驟
在nodejs中使用express來搭建框架可以說是非常的簡單方便,下面這篇文章主要給大家介紹了關(guān)于nodejs配置express服務(wù)器運(yùn)行自動打開瀏覽器的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01Node.js用Socket.IO做聊天軟件的實(shí)現(xiàn)示例
本文主要介紹了Node.js用Socket.IO做聊天軟件的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Win7系統(tǒng)中如何安裝高版本的NodeJS(親測有效!)
Node.js是基于Chrome V8引擎的JavaScript運(yùn)行環(huán)境,能夠使JavaScript在服務(wù)器端運(yùn)行,這篇文章主要給大家介紹了關(guān)于Win7系統(tǒng)中如何安裝高版本的NodeJS的相關(guān)資料,需要的朋友可以參考下2023-12-12基于nodejs+express4.X實(shí)現(xiàn)文件下載的實(shí)例代碼
本篇文章主要介紹了詳解nodejs+express4.X的文件下載的實(shí)例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07三分鐘教會你用nodejs操作mysql數(shù)據(jù)庫
MySQL數(shù)據(jù)庫作為最流行的開源數(shù)據(jù)庫,基本上是每個web開發(fā)者必須要掌握的數(shù)據(jù)庫程序之一了,基本使用?node.js上,最受歡迎的mysql包就是mysql模塊,下面這篇文章主要給大家介紹了關(guān)于如何通過三分鐘教會你用nodejs操作mysql數(shù)據(jù)庫,需要的朋友可以參考下2023-05-05node連接mysql查詢事務(wù)處理的實(shí)現(xiàn)
本文主要介紹了node連接mysql查詢事務(wù)處理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-11-11