CNode

关于net监听与收发的问题

问答
Jjcpwfloi发布于12 年前最后回复12 年前7 回复5165 浏览0 收藏

请问如果我要实现这样的功能应该如何做:

  • server监听client,然后就这样放着。
  • server可以主动地(比如post来了数据然后让server发消息)去向client发送一些信息并且等待client返回信息。
  • client接受了server的消息后运行一些程序然后将结果反馈给server。

跪求啊T_T

查看回复

回复 (7)

J
jcpwfloi#1·12 年前

比如说

var net = require('net');
var server = net.createServer(function(sock) {
});

这样。。 然后我在express里面有:

app.post('/submit', function(req, res) {
	//我想在这里向client发送data。。
});

跪求如何做到。。

Y
yorkie#2·12 年前

要看你的client是啥,是ios就好办啦

J
jcpwfloi#3·12 年前
引用 yorkie要看你的client是啥,是ios就好办啦

@yorkie client也是一个js程序。。它执行一些东西后把结果返回给server。。而且因为某些原因,此处server和client不能颠倒

Y
yorkie#4·12 年前

那就用消息队列呗

  • 一个是用类似zmq这样的 具体你需要自己研究
  • 另一个就是resque这样基于redis来实现通知客户端的需求,然后自己用http实现req/res的功能,服务器通过redis通知客户端 然后客户端掉用服务器的http api,我自己偏向于后者,因为http的社区比net丰富得多。
J
jcpwfloi#5·12 年前
引用 yorkie那就用消息队列呗 一个是用类似zmq这样的 具体你需要自己研究 另一个就是resque这样基于redis来实现通知客户端的需求,然后自己用http实现req/res的功能,服务器通过redis...

@yorkie 我突发奇想:如果这样可以不:

  • 原来的server端变成一个client和一个server
  • post请求到达的时候用client通知本地server
  • server广播消息到每个client
  • 原client收到消息,处理后发送到server
B
bnuhero#6·12 年前
引用 jcpwfloi@yorkie 我突发奇想:如果这样可以不: 原来的server端变成一个client和一个server post请求到达的时候用client通知本地server server广播消息到每个c...

@jcpwfloi

不如直接用socket.io。创建一个Socket.IO server,绑定到一个HTTP server。

  1. HTTP Server接收到POST请求后,在路由处理函数中,调用socket.io-client模块,创建一个client,向Socket.io Server发送消息,假设对应的事件是server-notification
  2. Socker.io server在connection事件处理函数中,定义socket对象的下列事件处理函数:
    • server-notification - 收到通知后,调用socket.broadcast.emit向所有的client广播事件client-call
    • client-result - 处理client发送到server的结果
  3. 调用socket.io-client创建Socket.io的client,在client-call事件处理函数中:实现处理逻辑,最后调用socket.emit('client-result', result)返回结果。
参与回复
登录后即可参与回复。登录