【小程序入门集锦】7,使用socket.io搭建简单聊天室

一、demo

socket.io在实时互动功能上是一个较为成熟的技术解决方案,有多种语言的实现。今天,我们使用两个第三方类库,一个client端,一个server端,在小程序中搭建一个简单的聊天室。

简单易用,是http://socket.io的基本特征。

1,下载wxsocketio/wxapp-socket-io

解压,在weapp_demo目录建立小程序项目。

2,安装:go gethttp://github.com/googollee/go-socket.io

然后,使用我们写好的server/main.go文件,运行:go run main.go

3,修改小程序项目app.js文件中的socket地址

const socket = io("ws://localhost:5000/http://socket.io/")

5000是在第2步指定的端口:

http.ListenAndServe(":5000", nil)

/http://socket.io/是通过它指定的:

http.Handle("/http://socket.io/", server)

可以下载我们打包的代码:链接:https://pan.baidu.com/s/1c2vLIfA密码: asfb

二、说明

小程序index.js

socket.on('login', function(msg) {

wx.showToast({

title: '登录成功\n用户名:'+msg,

icon: 'success',

duration: 1000

})

setTimeout(

()=>{

wx.navigateTo({

url: '../room/index',

})

},

1000

)

socket.on("login"),代表监听来自server端的login事件,包括broadcast事情和emit事件。

broadcast和emit有什么区别?

前者是发给所有人(除了当前客户端自己),emit是只回复给当前客户端自己。

在main.go有:

so.Emit("login", so.Id())

这是发给小程序当前客户端的。

附详情说明:

服务器信息传输

// send to current request socket clientsocket.emit('message', "this is a test");// sending to all clients except sendersocket.broadcast.emit('message', "this is a test");// sending to all clients in 'game' room(channel) except sendersocket.broadcast.to('game').emit('message', 'nice game');// sending to all clients, include senderio.sockets.emit('message', "this is a test");// sending to all clients in 'game' room(channel), include senderhttp://io.sockets.in('game').emit('message', 'cool game');// sending to individual socketidio.sockets.socket(socketid).emit('message', 'for your eyes only');

--

main.go:

so.Join("chat")

chat是分组名称,相当于聊天室房间,藉此可实现chat room功能。

---

我在知乎开了一个live,4月22日晚(周六)8点半我在知乎与大家见面:

【0基础周末学习小程序开发】

知乎 Live - 全新的实时问答

在【哲学李论】公众号回复"0基础周末学习小程序开发",可以免费领券,限量500名。

在微信公众号哲学李论,回复“小程序入门集锦”可以看到这个系列的所有文章。

知乎同名专栏:0基础小程序开发教程 - 知乎专栏

本文同时在多个平台、社群转发,在公众号回复“社群”可与其它艺友热情连接。

如果觉得本文还行,请转发到朋友圈让更多朋友看到。

如果您看到有料的文章,欢迎与10W艺友分享,荐文热线:[email protected]

你可能感兴趣的:(【小程序入门集锦】7,使用socket.io搭建简单聊天室)