Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
rudern
物联大师
提交
35741fc6
物
物联大师
项目概览
rudern
/
物联大师
通知
4
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
物
物联大师
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
35741fc6
编写于
9月 30, 2020
作者:
J
Jason
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
透传后端
上级
a2553e39
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
51 addition
and
10 deletion
+51
-10
internal/core/peer.go
internal/core/peer.go
+25
-10
internal/web/app.go
internal/web/app.go
+2
-0
internal/web/peer.go
internal/web/peer.go
+24
-0
未找到文件。
internal/core/peer.go
浏览文件 @
35741fc6
package
core
import
"net"
import
(
"fmt"
"golang.org/x/net/websocket"
)
type
Peer
struct
{
conn
n
et
.
Conn
conn
*
websock
et
.
Conn
link
*
Link
}
func
NewPeer
(
conn
net
.
Conn
,
link
*
Link
)
*
Peer
{
type
PeerPacket
struct
{
cmd
string
payload
[]
byte
}
func
NewPeer
(
conn
*
websocket
.
Conn
,
link
*
Link
)
*
Peer
{
peer
:=
&
Peer
{
conn
:
conn
,
link
:
link
,
...
...
@@ -16,21 +24,28 @@ func NewPeer(conn net.Conn, link *Link) *Peer {
return
peer
}
func
(
p
*
Peer
)
receive
()
{
buf
:=
make
([]
byte
,
1024
)
func
(
p
*
Peer
)
Receive
()
{
for
{
n
,
e
:=
p
.
conn
.
Read
(
buf
)
if
e
!=
nil
{
var
pack
PeerPacket
if
err
:=
websocket
.
JSON
.
Receive
(
p
.
conn
,
&
pack
);
err
!=
nil
{
fmt
.
Println
(
err
)
break
}
_
=
p
.
link
.
Write
(
buf
[
:
n
])
//TODO 使用协议
switch
pack
.
cmd
{
case
"transfer"
:
_
=
p
.
link
.
Write
(
pack
.
payload
)
}
}
_
=
p
.
Close
()
}
func
(
p
*
Peer
)
Send
(
buf
[]
byte
)
error
{
return
nil
pack
:=
&
PeerPacket
{
cmd
:
"transfer"
,
payload
:
buf
,
}
return
websocket
.
Message
.
Send
(
p
.
conn
,
pack
)
}
func
(
p
*
Peer
)
Close
()
error
{
...
...
internal/web/app.go
浏览文件 @
35741fc6
...
...
@@ -26,6 +26,8 @@ func Serve() {
//MQTT
app
.
GET
(
"/mqtt"
,
mqtt
)
//透传
app
.
GET
(
"/peer"
,
peer
)
//开放接口
open
.
RegisterRoutes
(
app
.
Group
(
"/open"
))
...
...
internal/web/peer.go
0 → 100644
浏览文件 @
35741fc6
package
web
import
(
"git.zgwit.com/zgwit/iot-admin/internal/core"
"github.com/gin-gonic/gin"
"golang.org/x/net/websocket"
"log"
)
func
peer
(
ctx
*
gin
.
Context
)
{
key
:=
ctx
.
Query
(
"key"
)
log
.
Println
(
key
)
//TODO 获取链接
//link, err := core.GetLink()
websocket
.
Handler
(
func
(
ws
*
websocket
.
Conn
)
{
peer
:=
core
.
NewPeer
(
ws
,
nil
)
peer
.
Receive
()
})
.
ServeHTTP
(
ctx
.
Writer
,
ctx
.
Request
)
//ctx.Abort()
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录