摘要:用實(shí)現(xiàn)聊天服務(wù)器搭建創(chuàng)建一個(gè)服務(wù)監(jiān)聽服務(wù)端口服務(wù)端已經(jīng)啟動(dòng)請?jiān)L問客戶端服務(wù)搭建與服務(wù)端通信我們要建立服務(wù)端請求連接斷開連接客戶端建立連接客戶端向服務(wù)端發(fā)送請求觸發(fā)事件接收客戶端的信息將服務(wù)端的數(shù)據(jù)廣播到客戶端去客戶端接收服務(wù)
node.js 用socket實(shí)現(xiàn)聊天 服務(wù)器搭建
app.js
const http = require("http"); const express = require("./express"); //創(chuàng)建一個(gè)服務(wù) const server = http.createServer(express); //監(jiān)聽服務(wù)端口 server.listen(8001,()=>{ console.log("服務(wù)端已經(jīng)啟動(dòng),請?jiān)L問 http://localhost:8001"); });
express.js
const url=require("url"); const fs=require("fs"); function express(req,res){ var urlObj=url.parse(req.url); //console.log(urlObj); var filePath="./www"+urlObj.pathname; var content="not found"; if(fs.existsSync(filePath)){ content=fs.readFileSync(filePath); } res.end(content.toString()); } module.exports=express;
index.html
Socket.IO chat
我們要建立服務(wù)端socket請求連接
io.on("connection", function(socket){ console.log("a user connected"); //斷開連接 socket.on("disconnect", function(){ console.log("user disconnected"); }); });
index.js
//客戶端建立連接 var socket = io();客戶端向服務(wù)端發(fā)送請求
index.js
$("form").submit(function(){ //觸發(fā)事件 socket.emit("chat message", $("#m").val()); $("#m").val(""); return false; });
app.js
//接收客戶端的信息 socket.on("chat message", function(msg){ console.log("message: " + msg); });
將服務(wù)端的數(shù)據(jù)廣播到客戶端去
socket.on("chat message", function(msg){ console.log("message: " + msg); socket.broadcast.emit("clientE",msg); });
客戶端接收服務(wù)端廣播出來的數(shù)據(jù)
socket.on("clientE", function(msg){ $("#messages").append($("
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89072.html
摘要:前端邏輯搞定之后,思考一下這個(gè)聊天室的交互是怎么實(shí)現(xiàn)的。在前端監(jiān)聽一個(gè)事件,這個(gè)事件的觸發(fā)條件是成功和服務(wù)端建立連接。攜帶一個(gè)參數(shù),即用戶的輸入。別人發(fā)送的消息現(xiàn)在就需要在前端建立一個(gè)響應(yīng)服務(wù)端有新消息的監(jiān)聽事件了。 一些廢話:) 最近在學(xué)校比較閑,終于有這么一塊時(shí)間可以自由支配了,所以內(nèi)心還是十分的酸爽舒暢的。當(dāng)然了,罪惡的事情也是有的,比如已經(jīng)連續(xù)一周沒有吃早飯了,其實(shí)現(xiàn)在回頭想想...
摘要:前端邏輯搞定之后,思考一下這個(gè)聊天室的交互是怎么實(shí)現(xiàn)的。在前端監(jiān)聽一個(gè)事件,這個(gè)事件的觸發(fā)條件是成功和服務(wù)端建立連接。攜帶一個(gè)參數(shù),即用戶的輸入。別人發(fā)送的消息現(xiàn)在就需要在前端建立一個(gè)響應(yīng)服務(wù)端有新消息的監(jiān)聽事件了。 一些廢話:) 最近在學(xué)校比較閑,終于有這么一塊時(shí)間可以自由支配了,所以內(nèi)心還是十分的酸爽舒暢的。當(dāng)然了,罪惡的事情也是有的,比如已經(jīng)連續(xù)一周沒有吃早飯了,其實(shí)現(xiàn)在回頭想想...
摘要:本文實(shí)際為翻譯官方教程開始吧,我們做個(gè)聊天應(yīng)用在這個(gè)教程里,我們將制作一個(gè)簡單的網(wǎng)頁聊天應(yīng)用。它機(jī)會(huì)不要求你有任何關(guān)于或的基礎(chǔ),所以這份教程適合任何水平的開發(fā)者。介紹曾經(jīng)寫一個(gè)網(wǎng)頁聊天應(yīng)用可能會(huì)用到網(wǎng)頁工具套件,那時(shí)候非常困難。 本文實(shí)際為翻譯Socket.io官方教程——《Get Started: Chat application》 開始吧,我們做個(gè)聊天應(yīng)用! 在這個(gè)教程里,我們將制...
摘要:但是需要注意的一點(diǎn)是協(xié)議是建立在協(xié)議基礎(chǔ)之上的,需要經(jīng)過一次握手。所以連接的發(fā)起方仍是客戶端。是一個(gè)簡潔而靈活的應(yīng)用框架提供一系列強(qiáng)大特性幫助你創(chuàng)建各種應(yīng)用。這也是為什么要采用協(xié)議來實(shí)現(xiàn)聊天室的原因。 從開始寫到完善差不多斷斷續(xù)續(xù)差不多半個(gè)月時(shí)間,雖然還沒有打到想要的效果但還是階段性總結(jié)一下。(下一步加入打算視頻通訊功能)本文默認(rèn)你已掌握 node 相關(guān)基礎(chǔ)知識(shí) GitHub地址:ht...
摘要:異步最佳實(shí)踐避免回調(diào)地獄前端掘金本文涵蓋了處理異步操作的一些工具和技術(shù)和異步函數(shù)。 Nodejs 連接各種數(shù)據(jù)庫集合例子 - 后端 - 掘金Cassandra Module: cassandra-driver Installation ... 編寫 Node.js Rest API 的 10 個(gè)最佳實(shí)踐 - 前端 - 掘金全文共 6953 字,讀完需 8 分鐘,速讀需 2 分鐘。翻譯自...
閱讀 2784·2021-10-11 11:08
閱讀 1503·2021-09-30 09:48
閱讀 1062·2021-09-22 15:29
閱讀 1050·2019-08-30 15:54
閱讀 990·2019-08-29 15:19
閱讀 542·2019-08-29 13:12
閱讀 3176·2019-08-26 13:53
閱讀 979·2019-08-26 13:28