当前位置: 首页>>代码示例>>Golang>>正文


Golang link.Serve函数代码示例

本文整理汇总了Golang中github.com/funny/link.Serve函数的典型用法代码示例。如果您正苦于以下问题:Golang Serve函数的具体用法?Golang Serve怎么用?Golang Serve使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了Serve函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: StreamTest

func StreamTest(t *testing.T, callback func(*link.Session)) {
	protocol := New(1024, 1024, 1024)

	server, err := link.Serve("tcp", "0.0.0.0:0", protocol)
	unitest.NotError(t, err)
	addr := server.Listener().Addr().String()

	go server.Serve(func(session *link.Session) {
		for {
			var msg TestMessage
			if err := session.Receive(&msg); err != nil {
				break
			}
			if err := session.Send(msg); err != nil {
				break
			}
		}
	})

	session, err := link.Connect("tcp", addr, protocol)
	unitest.NotError(t, err)
	callback(session)
	session.Close()
	server.Stop()

	MakeSureSessionGoroutineExit(t)
}
开发者ID:youxidev,项目名称:GoGameServer,代码行数:27,代码来源:stream_test.go

示例2: PacketTest

func PacketTest(t *testing.T, callback func(*link.Session)) {
	protocol := New(binary.SplitByUvarint, 1024, 1024, 1024)

	server, err := link.Serve("tcp", "0.0.0.0:0", protocol)
	unitest.NotError(t, err)

	go server.Serve(func(session *link.Session) {
		for {
			var msg RAW
			if err := session.Receive(&msg); err != nil {
				break
			}
			if err := session.Send(msg); err != nil {
				break
			}
		}
	})

	session, err := link.Connect("tcp", server.Listener().Addr().String(), protocol)
	unitest.NotError(t, err)
	callback(session)
	session.Close()
	server.Stop()

	MakeSureSessionGoroutineExit(t)
}
开发者ID:youxidev,项目名称:GoGameServer,代码行数:26,代码来源:packet_test.go

示例3: main

func main() {
	var addr string

	flag.StringVar(&addr, "addr", ":10010", "echo server address")
	flag.Parse()

	server, err := link.Serve("tcp", addr, link.Packet(2, 1024*1024, 1024, binary.LittleEndian, TestCodec{}))
	if err != nil {
		panic(err)
	}

	println("server start:", server.Listener().Addr().String())
	for {
		session, err := server.Accept()
		if err != nil {
			break
		}
		go func() {
			//addr := session.Conn().RemoteAddr().String()
			//println("client", addr, "connected")
			for {
				var msg []byte
				if err = session.Receive(&msg); err != nil {
					break
				}
				if err = session.Send(msg); err != nil {
					break
				}
			}
			//println("client", addr, "closed")
		}()
	}
}
开发者ID:catxuxiang,项目名称:link,代码行数:33,代码来源:server2.go

示例4: main

func main() {
	flag.Parse()

	server, err := link.Serve("tcp", *addr, packet.New(
		binary.SplitByUint16BE, 1024, 1024, 1024,
	))
	if err != nil {
		panic(err)
	}
	println("server start:", server.Listener().Addr().String())

	server.Serve(func(session *link.Session) {
		addr := session.Conn().RemoteAddr().String()
		log(addr, "connected")
		for {
			var msg packet.RAW
			if err := session.Receive(&msg); err != nil {
				break
			}
			log(addr, "say:", string(msg))
			if err = session.Send(msg); err != nil {
				break
			}
		}
		log(addr, "closed")
	})
}
开发者ID:youxidev,项目名称:GoGameServer,代码行数:27,代码来源:echo_server.go

示例5: startLocalServer

func startLocalServer() {
	//连接DB
	db.Init()

	//连接Redis
	redisProxyErr := redisProxy.InitClient(cfg.GetValue("redis_ip"), cfg.GetValue("redis_port"))
	checkError(redisProxyErr)

	listener, err := link.Serve("tcp", "0.0.0.0:"+local_port, packet.New(
		binary.SplitByUint32BE, 1024, 1024, 1024,
	))
	checkError(err)

	listener.Serve(func(session *link.Session) {
		session.AddCloseCallback(session, func() {
			session.Close()
		})
		global.AddSession(session)

		var msg packet.RAW
		for {
			if err := session.Receive(&msg); err != nil {
				break
			}
			module.ReceiveMessage(session, msg)
		}
	})
}
开发者ID:youxidev,项目名称:GoGameServer,代码行数:28,代码来源:main.go

示例6: StartTestBackend

func StartTestBackend(t *testing.T, handler func(*link.Session)) *link.Server {
	backend, err := link.Serve("tcp", "0.0.0.0:0", NewBackend(
		1024, 1024, 1024,
	))
	unitest.NotError(t, err)
	go backend.Serve(handler)
	return backend
}
开发者ID:youxidev,项目名称:GoGameServer,代码行数:8,代码来源:unit_test.go

示例7: main

func main() {
	var addr string

	flag.StringVar(&addr, "addr", ":10010", "echo server address")
	flag.Parse()

	server, err := link.Serve("tcp://"+addr, link.Stream(), nil)
	if err != nil {
		panic(err)
	}
	println("server start:", server.Listener().Addr().String())
	server.Loop(link.Echo)
}
开发者ID:616050468,项目名称:link,代码行数:13,代码来源:echo_server.go

示例8: main

// This is broadcast server demo work with the echo_client.
// usage:
//     cd src/github.com/funny/link
//     go generate channel.go
//     go run example/echo/broadcast.go
func main() {
	var addr string

	flag.StringVar(&addr, "addr", ":10010", "echo server address")
	flag.Parse()

	server, err := link.Serve("tcp", addr, link.Async(1024, link.Packet(2, 1024*1024, 1024, binary.LittleEndian, TestCodec{})))
	if err != nil {
		panic(err)
	}
	println("server start:", server.Listener().Addr().String())

	channel := link.NewUint64Channel()
	go func() {
		for range time.Tick(time.Second * 2) {
			now := "from channel: " + time.Now().Format("2006-01-02 15:04:05")
			channel.Fetch(func(session *link.Session) {
				session.Send(now)
			})
		}
	}()

	for {
		session, err := server.Accept()
		if err != nil {
			break
		}

		go func() {
			addr := session.Conn().RemoteAddr().String()
			println("client", addr, "connected")

			channel.Put(session.Id(), session)

			for {
				var msg string
				if err := session.Receive(&msg); err != nil {
					break
				}
				println(addr, "say:", msg)
				channel.Fetch(func(session *link.Session) {
					session.Send("from " + addr + ": " + string(msg))
				})
			}

			println("client", addr, "closed")
			channel.Remove(session.Id())
		}()
	}
}
开发者ID:ericx10ng,项目名称:link,代码行数:55,代码来源:broadcast.go

示例9: main

// This is broadcast server demo work with the echo_client.
// usage:
//     go run echo_broadcast.go
func main() {
	var addr string

	flag.StringVar(&addr, "addr", ":10010", "echo server address")
	flag.Parse()

	server, err := link.Serve("tcp", addr, link.String(link.Uint16BE))
	if err != nil {
		panic(err)
	}
	println("server start:", server.Listener().Addr().String())

	channel := link.NewChannel()
	go func() {
		for range time.Tick(time.Second * 2) {
			now := time.Now().Format("2006-01-02 15:04:05")
			channel.Broadcast("from channel: " + now)
		}
	}()

	for {
		session, err := server.Accept()
		if err != nil {
			break
		}

		go func() {
			addr := session.Conn().RemoteAddr().String()
			println("client", addr, "connected")

			session.EnableAsyncSend(1024)
			channel.Join(session)

			for {
				var msg string
				if err := session.Receive(&msg); err != nil {
					break
				}
				println(addr, "say:", msg)
				channel.Broadcast("from " + addr + ": " + string(msg))
			}

			println("client", addr, "closed")
			channel.Exit(session)
		}()
	}
}
开发者ID:Jasonix,项目名称:link,代码行数:50,代码来源:echo_broadcast.go

示例10: InitServer

//初始化
func InitServer(port string) error {
	servers = make(map[string]*link.Session)
	asyncMsgs = list.New()

	db.Init()

	startSysDB()

	createRevGoroutines()

	listener, err := link.Serve("tcp", "0.0.0.0:"+port, packet.New(
		binary.SplitByUint32BE, 1024, 1024, 1024,
	))
	if err != nil {
		return err
	}

	listener.Serve(func(session *link.Session) {
		for {
			var msg packet.RAW
			if err := session.Receive(&msg); err != nil {
				break
			}

			msgID := binary.GetUint16LE(msg[:2])
			if systemProto.IsValidID(msgID) {
				//系统消息
				dealReceiveSystemMsgC2S(session, msg)
			} else if dbProto.IsValidAsyncID(msgID) {
				//异步DB消息
				asyncMsgs.PushBack(msg)
			} else {
				//同步DB消息
				useObj := revSyncMsgGoroutines[revSyncMsgGoroutineIndex]
				useObj.revMsgChan <- goroutineMsg{msg, session}
				revSyncMsgGoroutineIndex++
				if revSyncMsgGoroutineIndex == revSyncMsgGoroutineNum {
					revSyncMsgGoroutineIndex = 0
				}
			}
		}
	})

	return nil
}
开发者ID:youxidev,项目名称:GoGameServer,代码行数:46,代码来源:dbProxyServer.go

示例11: StartEchoBackend

func StartEchoBackend() (*link.Server, error) {
	backend, err := link.Serve("tcp://0.0.0.0:0", NewBackend(), link.Bytes())
	if err != nil {
		return nil, err
	}
	go backend.Loop(func(session *link.Session) {
		var msg []byte
		for {
			if err := session.Receive(&msg); err != nil {
				break
			}
			if err := session.Send(msg); err != nil {
				break
			}
		}
	})
	return backend, nil
}
开发者ID:616050468,项目名称:link,代码行数:18,代码来源:unit_test.go

示例12: main

func main() {
	var addr string
	var pro bool

	flag.StringVar(&addr, "addr", ":10010", "echo server address")
	flag.BoolVar(&pro, "pro", true, "use PacketPro()")
	flag.Parse()

	var codecType link.CodecType

	if pro {
		pool := binary.NewBufferPool(2, 1, 32)
		codecType = link.PacketPro(2, 1024*1024, 1024, link.LittleEndian, pool, TestCodec{})
	} else {
		codecType = link.Packet(2, 1024*1024, 1024, link.LittleEndian, TestCodec{})
	}

	server, err := link.Serve("tcp", addr, codecType)
	if err != nil {
		panic(err)
	}

	println("server start:", server.Listener().Addr().String())
	for {
		session, err := server.Accept()
		if err != nil {
			break
		}
		go func() {
			//addr := session.Conn().RemoteAddr().String()
			//println("client", addr, "connected")
			for {
				var msg []byte
				if err = session.Receive(&msg); err != nil {
					break
				}
				if err = session.Send(msg); err != nil {
					break
				}
			}
			//println("client", addr, "closed")
		}()
	}
}
开发者ID:276361270,项目名称:link,代码行数:44,代码来源:server2.go

示例13: main

func main() {
	var addr string

	flag.StringVar(&addr, "addr", ":10010", "echo server address")
	flag.Parse()

	server, err := link.Serve("tcp", addr, codec.Bytes(codec.Uint16BE))
	if err != nil {
		panic(err)
	}
	println("server start:", server.Listener().Addr().String())
	for {
		session, err := server.Accept()
		if err != nil {
			break
		}
		go io.Copy(session.Conn(), session.Conn())
	}
}
开发者ID:houcy,项目名称:link,代码行数:19,代码来源:server.go

示例14: main

func main() {
	funnk()
	go tcp_test()
	go func() {
		var addr string

		flag.StringVar(&addr, "addr", ":10010", "echo server address")
		flag.Parse()

		fmt.Println("addr:", addr)

		server, err := link.Serve("tcp", addr, codec.Bytes(codec.Uint16BE))
		if err != nil {
			panic(err)
		}
		println("server start:", server.Listener().Addr().String())
		for {
			session, err := server.Accept()
			if err != nil {
				break
			}
			go io.Copy(session.Conn(), session.Conn())
		}
	}()
	fmt.Println(test1)
	fmt.Println("ssssssssssssssssss")
	test_struct(&test2{})
	test_struct(&test2{})
	test_struct(&test2{})
	test_struct(&test2{})
	test_struct(&test2{})
	http.HandleFunc("/", sayhelloName)
	http.HandleFunc("/login/", login)
	http.HandleFunc("/upload/", upload)
	//	amqp_connect()
	err := http.ListenAndServe(":9099", nil) //设置监听的端口
	if err != nil {
		log.Fatal("ListenAndServe: ", err)
	}

}
开发者ID:wangzun,项目名称:go_web,代码行数:41,代码来源:go_web.go

示例15: startGateway

func startGateway() {
	listener, err := link.Serve("tcp", "0.0.0.0:"+gateway_port, packet.New(
		binary.SplitByUint32BE, 1024, 1024, 1024,
	))
	checkError(err)

	listener.Serve(func(session *link.Session) {
		session.AddCloseCallback(session, func() {
			transferProxy.SendClientSessionOffline(session.Id())
		})
		transferProxy.SendClientSessionOnline(session)

		var msg packet.RAW
		for {
			if err := session.Receive(&msg); err != nil {
				break
			}
			transferProxy.SendToTransferServer(msg, session)
		}
	})
}
开发者ID:youxidev,项目名称:GoGameServer,代码行数:21,代码来源:main.go


注:本文中的github.com/funny/link.Serve函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。