【GO】13.Iris WebSocket 实例

  • iris websocket服务端

package main

import (
	"fmt"

	"github.com/kataras/iris"
	"github.com/kataras/iris/websocket"
)

func main() {
	app := iris.New()

	app.Get("/", func(ctx iris.Context) {
		ctx.ServeFile("websockets.html", false) // second parameter: enable gzip?
	})

	setupWebsocket(app)

	// x2
	// http://localhost:8080
	// http://localhost:8080
	// write something, press submit, see the result.
	app.Run(iris.Addr(":8080"))
}

func setupWebsocket(app *iris.Application) {
	// create our echo websocket server
	ws := websocket.New(websocket.Config{
		ReadBufferSize:  1024,
		WriteBufferSize: 1024,
	})
	ws.OnConnection(handleConnection)

	// register the server on an endpoint.
	// see the inline javascript code in the websockets.html,
	// this endpoint is used to connect to the server.
	app.Get("/echo", ws.Handler())
	// serve the javascript built'n client-side library,
	// see websockets.html script tags, this path is used.
	app.Any("/iris-ws.js", websocket.ClientHandler())
}

func handleConnection(c websocket.Connection) {
	// Read events from browser
	c.On("chat", func(msg string) {
		// Print the message to the console, c.Context() is the iris's http context.
		fmt.Printf("%s sent: %s\n", c.Context().RemoteAddr(), msg)
		// Write message back to the client message owner with:
		// c.Emit("chat", msg)
		// Write message to all except this client with:
		c.To(websocket.Broadcast).Emit("chat", msg)
	})
}
  • 客户端html页面websockets.html

<!-- the message's input -->
<input id="input" type="text" />

<!-- when clicked then an iris websocket event will be sent to the server,
at this example we registered the 'chat' -->
<button onclick="send()">Send</button>

<!-- the messages will be shown here -->
<pre id="output"></pre>
<!-- import the iris client-side library for browser-->
<script src="/iris-ws.js"></script>

<script>
    var scheme = document.location.protocol == "https:" ? "wss" : "ws";
    var port = document.location.port ? (":" + document.location.port) : "";
    // see app.Get("/echo", ws.Handler()) on main.go
    var wsURL = scheme + "://" + document.location.hostname + port+"/echo";

    var input = document.getElementById("input");
    var output = document.getElementById("output");

    // Ws comes from the auto-served '/iris-ws.js'
    var socket = new Ws(wsURL)
    socket.OnConnect(function () {
        output.innerHTML += "Status: Connected\n";
    });

    socket.OnDisconnect(function () {
        output.innerHTML += "Status: Disconnected\n";
    });

    // read events from the server
    socket.On("chat", function (msg) {
        addMessage(msg);
    });

    function send() {
        addMessage("Me: " + input.value); // write ourselves
        socket.Emit("chat", input.value); // send chat event data to the websocket server
        input.value = ""; // clear the input
    }

    function addMessage(msg) {
        output.innerHTML += msg + "\n";
    }
</script>
  • 启动服务端后,打开三个localhost:8080页面

1号页面输入我是1号

2号页面输入我是2号

3号页面输入我是3号

三个页面分别显示如下:

代码来自官方https://github.com/kataras/iris

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: MQTT.js 是一个用于 JavaScript 的用于实现 MQTT 协议的客户端库。MQTT 是一种轻量级的发布/订阅消息传输协议,可以在低带宽、不稳定网络条件下进行高效的通信。 Websocket 是一种全双工通信协议,允许在 Web 浏览器和服务器之间进行实时数据传输。与传统的 HTTP 请求-响应机制不同,Websocket 可以在浏览器和服务器之间建立长久的连接,实现双向通信,从而可以实时更新数据而无需进行多次的请求和响应过程。 MQTT.js WebSocket 是基于 MQTT.js 库使用 Websocket 进行通信的一种方式。通过使用 MQTT.js WebSocket,我们可以在浏览器中实现 MQTT 协议的功能,从而能够在 Web 应用程序中进行实时消息传输和订阅。 使用 MQTT.js WebSocket,我们可以轻松地在浏览器中创建 MQTT 客户端,与 MQTT 服务器进行连接,并通过订阅和发布主题来实现实时消息的传输。这样,我们可以实现各种场景下的实时数据传输,如物联网设备之间的通信、实时监控系统等。 总结来说,MQTT.js WebSocket 是一种用于在浏览器中实现 MQTT 协议的客户端库,提供了与 MQTT 服务器进行实时消息传输的功能。使用它,我们可以实现实时消息的订阅和发布,为各种实时数据传输场景提供便利。 ### 回答2: MQTT.js是一个基于JavaScript的客户端库,用于实现MQTT协议的通信。它为Web浏览器和Node.js提供了一个简单的接口,以便实现与MQTT代理的通信。 WebSocket是一种通信协议,它提供了双向的、实时的数据传输能力。MQTT.js通过WebSocket实现与MQTT代理的通信,使得基于浏览器和Node.js的应用程序能够与MQTT代理进行实时的数据交互。 使用MQTT.js WebSocket的时候,首先需要在应用程序中引入MQTT.js库,并创建一个MQTT客户端实例。然后,通过指定WebSocket的URL和端口号,将MQTT客户端与MQTT代理进行连接。连接成功后,就可以使用MQTT.js的API来发布消息或订阅主题了。 MQTT.js WebSocket的优点是它能够在浏览器和Node.js环境下进行跨平台的通信。同时,它也支持多种认证机制和可定制化的选项,以及保持长连接和断线重连的功能。此外,MQTT.js与MQTT代理之间的通信是基于二进制协议的,所以效率较高。 总结起来,MQTT.js WebSocket提供了一种便捷的方式,使得浏览器和Node.js应用程序能够通过MQTT协议与MQTT代理进行实时的双向数据交互。 ### 回答3: MQTT.js 是一个基于 JavaScript 的 MQTT 客户端库,用于在浏览器或 Node.js 环境中使用 MQTT 协议进行消息传输。 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,允许客户端和服务器之间实时地进行双向通信。 MQTT.js 通过使用 WebSocket 协议来提供浏览器中的 MQTT 客户端功能。它允许在浏览器中使用 MQTT 协议进行消息传输,实现实时数据传递。 使用 MQTT.js WebSocket,可以通过创建一个 MQTT 客户端实例来连接到 MQTT 代理服务器。通过这个客户端实例,可以订阅和发布消息,并与其他 MQTT 客户端进行实时通信。 MQTT.js WebSocket 具有以下特点: 1. 简单易用:MQTT.js 提供了简单的 API 来连接到 MQTT 代理服务器,订阅和发布消息。 2. 兼容性:MQTT.js 能够在浏览器和 Node.js 环境中运行,具有较好的兼容性。 3. 实时性:通过使用 WebSocket 协议,MQTT.js 实现了客户端和服务器之间的实时双向通信,可以实时传递数据。 4. 轻量级:MQTT 协议本身是一种轻量级的消息传输协议,而 MQTT.js 使用 WebSocket 来实现 MQTT 功能,保持了协议的轻量级特性。 总之,MQTT.js WebSocket 提供了一种方便、快捷的方式来在浏览器或 Node.js 环境中使用 MQTT 协议进行实时消息传输。无论是在物联网设备间的通信,还是在实时数据传递的场景中,都可以使用 MQTT.js WebSocket 来实现高效的消息传输。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值