- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- 基于websocket實(shí)現簡(jiǎn)單聊天室對話(huà)
本文實(shí)例為大家分享了websocket實(shí)現簡(jiǎn)單聊天室對話(huà)的具體代碼,供大家參考,具體內容如下
首先搭建一個(gè)node的環(huán)境,在app.js中寫(xiě)入以下代碼
npm install socket.io-client
socket是一個(gè)高性能的服務(wù)器框架,開(kāi)發(fā)者只要實(shí)現一兩個(gè)接口,便可以開(kāi)發(fā)出自己的網(wǎng)絡(luò )應用,例如Rpc服務(wù)、聊天室服務(wù)器、手機游戲服務(wù)器等。
npm install http-server
一般提供server服務(wù),參數可以指定端口、地址等等,例如指定服務(wù)在8888端口啟動(dòng),命令為:http-server src -p 8888
npm install koa
Koa 通過(guò) node.js 實(shí)現了一個(gè)十分具有表現力的 HTTP 中間件框架,力求讓 Web 應用開(kāi)發(fā)和 API 使用更加地愉快。Koa的中間件之間按照編碼順序在棧內依次執行,允許您執行操作并向下傳遞請求(downstream),之后過(guò)濾并逆序返回響應(upstream)。
// 引入依賴(lài) const koa = require("koa") // 初始化koa const app = new koa() // 開(kāi)啟 http var server = require("http").createServer(app.callback()) // 初始化 socket const io = require("socket.io")(server, { cors: true }) // 監聽(tīng) io.on('connection', (socket) => { // 主動(dòng)向客戶(hù)端發(fā)消息 setTimeout(() => { // 通過(guò)io對象方法emit 觸發(fā)一個(gè)自定義事件 并且向客戶(hù)端發(fā)送消息 io.emit('chat message', '想說(shuō)點(diǎn)什么?') }, 1000) socket.on('disconnect', () => { console.log('user disconnected') }) // 在服務(wù)器收到客戶(hù)端的消息 // 通過(guò)on方法監聽(tīng)事件 當客戶(hù)端發(fā)送消息時(shí)會(huì )觸發(fā)該事件 并且可以接受客戶(hù)端發(fā)來(lái)的消息 socket.on('chat message', (msg) => { console.log(msg) // msg為客戶(hù)端發(fā)來(lái)的消息 // 發(fā)消息給客戶(hù)端是emit setTimeout(() => { msg = msg.replace("你", "我").replace("嗎", "").replace("?", "!") // 觸發(fā)事件 將處理之后的消息信息發(fā)送給客戶(hù)端 io.emit('chat message', msg) }, 500) }) }) server.listen(5522,()=>{ console.log('socket服務(wù)已開(kāi)啟,端口號為5522') });
調用這個(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.監聽(tīng)消息返回 this.socket.on('chat message', msg => { console.log('服務(wù)回來(lái)的消息', msg) }) }
這樣就能進(jìn)行一個(gè)簡(jiǎn)單的人工智能對話(huà)了
以上就是本文的全部?jì)热?,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站