基于websocket實(shí)現(xiàn)簡單聊天室對(duì)話
本文實(shí)例為大家分享了websocket實(shí)現(xiàn)簡單聊天室對(duì)話的具體代碼,供大家參考,具體內(nèi)容如下
首先搭建一個(gè)node的環(huán)境,在app.js中寫入以下代碼
npm install socket.io-client
socket是一個(gè)高性能的服務(wù)器框架,開發(fā)者只要實(shí)現(xiàn)一兩個(gè)接口,便可以開發(fā)出自己的網(wǎng)絡(luò)應(yīng)用,例如Rpc服務(wù)、聊天室服務(wù)器、手機(jī)游戲服務(wù)器等。
npm install http-server
一般提供server服務(wù),參數(shù)可以指定端口、地址等等,例如指定服務(wù)在8888端口啟動(dòng),命令為:http-server src -p 8888
npm install koa
Koa 通過 node.js 實(shí)現(xiàn)了一個(gè)十分具有表現(xiàn)力的 HTTP 中間件框架,力求讓 Web 應(yīng)用開發(fā)和 API 使用更加地愉快。Koa的中間件之間按照編碼順序在棧內(nèi)依次執(zhí)行,允許您執(zhí)行操作并向下傳遞請求(downstream),之后過濾并逆序返回響應(yīng)(upstream)。
實(shí)現(xiàn)代碼
// 引入依賴 const koa = require("koa") // 初始化koa const app = new koa() // 開啟 http var server = require("http").createServer(app.callback()) // 初始化 socket const io = require("socket.io")(server, { cors: true }) // 監(jiān)聽 io.on('connection', (socket) => { // 主動(dòng)向客戶端發(fā)消息 setTimeout(() => { // 通過io對(duì)象方法emit 觸發(fā)一個(gè)自定義事件 并且向客戶端發(fā)送消息 io.emit('chat message', '想說點(diǎn)什么?') }, 1000) socket.on('disconnect', () => { console.log('user disconnected') }) // 在服務(wù)器收到客戶端的消息 // 通過on方法監(jiān)聽事件 當(dāng)客戶端發(fā)送消息時(shí)會(huì)觸發(fā)該事件 并且可以接受客戶端發(fā)來的消息 socket.on('chat message', (msg) => { console.log(msg) // msg為客戶端發(fā)來的消息 // 發(fā)消息給客戶端是emit setTimeout(() => { msg = msg.replace("你", "我").replace("嗎", "").replace("?", "!") // 觸發(fā)事件 將處理之后的消息信息發(fā)送給客戶端 io.emit('chat message', msg) }, 500) }) }) server.listen(5522,()=>{ console.log('socket服務(wù)已開啟,端口號(hào)為5522') });
調(diào)用這個(gè)服務(wù)
import { io } from 'socket.io-client' cteated(){ // 1.創(chuàng)建連接 可以自定義 this.socket = io('ws://localhost:5522') // 2. 建立連接 this.socket.on('connect', () => { console.log('建立連接成功了') }) // 3.監(jiān)聽消息返回 this.socket.on('chat message', msg => { console.log('服務(wù)回來的消息', msg) }) }
這樣就能進(jìn)行一個(gè)簡單的人工智能對(duì)話了
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用yarn代替npm管理前端項(xiàng)目模塊依賴的方法詳解
這篇文章主要給大家介紹了關(guān)于利用yarn代替npm管理前端項(xiàng)目模塊依賴的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09export?default?和?export?的使用方式示例詳解
這篇文章主要介紹了export?default?和?export?的使用方式,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08Node.js 使用流實(shí)現(xiàn)讀寫同步邊讀邊寫功能
本文通過代碼給大家介紹了Node.js 使用流實(shí)現(xiàn)讀寫同步邊讀邊寫功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的額朋友參考下吧2017-09-09詳解nodejs解壓版安裝和配置(帶有搭建前端項(xiàng)目腳手架)
這篇文章主要介紹了詳解nodejs解壓版安裝和配置(帶有搭建前端項(xiàng)目腳手架) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12使用express搭建一個(gè)簡單的查詢服務(wù)器的方法
本篇文章主要介紹了使用express搭建一個(gè)簡單的查詢服務(wù)器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-02-02Node.js?搭建后端服務(wù)器內(nèi)置模塊(?http+url+querystring?的使用)
這篇文章主要介紹了Node.js搭建后端服務(wù)器內(nèi)置模塊(http+url+querystring的使用),文章圍繞主題展開詳細(xì)的內(nèi)容戒殺,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-09-09