go语言和HTML5,go语言websocket使用与客户端html5调用

我们通过使用如下库创建websocket服务

go get golang.org/x/net/websocket

websocket服务端的代码如下:

package main;

import (

"golang.org/x/net/websocket"

"net/http"

"log"

"fmt"

)

//使用golang.org/x/net/websocket

//如果无法下载,请到下面的地址去下载

//http://www.golangtc.com/download/package

//http://gopm.io/

type Msg struct {

From string;

To string;

Data string;

}

//处理简单的字符串

func test(conn *websocket.Conn) {

var err error;

for {

data := "";

//接收消息

err = websocket.Message.Receive(conn,&data);

if err != nil {

break;

}

fmt.Println("client send: " + data);

msg := "hello " + data;

//发送消息

err = websocket.Message.Send(conn,msg);

if err != nil {

break;

}

}

}

//处理JSON数据

func test2(conn *websocket.Conn) {

var err error;

for {

var data Msg;

//接收消息

err = websocket.JSON.Receive(conn,&data);

if err != nil {

break;

}

fmt.Println(data.From,data.To,data.Data);

msg := Msg{

From: data.From,To: data.To,Data: "hello " + data.Data,};

//发送消息

err = websocket.JSON.Send(conn,msg);

if err != nil {

break;

}

}

}

func main() {

//http.Handle("/",websocket.Handler(test));

http.Handle("/",websocket.Handler(test2));

err := http.ListenAndServe(":8080",nil);

if err != nil {

log.Fatal(err);

}

}

html客户端代码如下:

websocket

var url = "ws://127.0.0.1:8080";

var ws = new WebSocket(url);

//ws打开时

ws.onopen = function() {

console.log("connect ...");

};

//ws连接关闭时

ws.onclose = function() {

console.log("close");

};

//监听服务器推送数据

ws.onmessage = function(ev) {

var result = document.getElementById("result");

result.innerHTML = result.innerHTML + "

" + ev.data + "

";

};

document.getElementById("sendBtn").onclick = function() {

var msg = document.getElementById("msg").value;

if(msg.length == 0) {

alert("不能为空");

}

//发送数据

ws.send(msg);

return false;

};

32d8d5835862997ae00e58311d8b4e63.png

a935e68545e21d8c3f75728c8029927f.png

json格式:

websocket

var url = "ws://127.0.0.1:8080";

var ws = new WebSocket(url);

//ws打开时

ws.onopen = function() {

console.log("connect ...");

};

//ws连接关闭时

ws.onclose = function() {

console.log("close");

};

//监听服务器推送数据

ws.onmessage = function(ev) {

var result = document.getElementById("result");

var data = eval("(" + ev.data + ")");

result.innerHTML = result.innerHTML + "

" + data.From + "发送" + data.To + ":" + data.Data + "

";

};

document.getElementById("sendBtn").onclick = function() {

var msg = document.getElementById("msg").value;

if(msg.length == 0) {

alert("不能为空");

}

//发送数据

//注意这里JOSN的拼接,key和value要用双引号,否则go无法解析

ws.send('{"From":"小张","To":"小王","Data":"' + msg + '"}');

return false;

};

eaab06f0a74ba3a5e6ef6cbfc5db1dae.png

9bc3ac532db07bd95709770050e1b844.png

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值