I don't understand what the problem is. You say that you get the 'end' event on the server side when the client disconnects. What else do you need?
Also, with streaming calls, you need to call call.end() on the server side too. The callback for the 'end' event is usually a good place to do that. On Fri, Mar 3, 2017 at 1:38 PM Constantine <[email protected]> wrote: > I have a *nodejs* server and a *nodejs* client. With a "streaming client > <--> streaming server" when > > - I call the *.end()* method on the *client* object, the *.on('end')* event > is called on the *server* > - I disconnect the *client* code with *ctrl+c, *also the *.on('end')* event > is called on the *server* > > (I shared my code below.) > > it means that the server will understand that a client is > dead(disconnected), so there will be no more resource consumption on the > server. Did I miss something or not? > I don't know how to implement the heart-beat on this situations, any clue > would be appreciated. > > > *Server.js* > var PROTO_PATH = __dirname + '/../../protos/hellostreamingworld.proto'; > > var grpc = require('grpc'); > var hello_proto = grpc.load(PROTO_PATH).hellostreamingworld; > > /** > * Implements the SayHello RPC method. > */ > function sayHello(call) { > call.on('data', () => { > call.write('recieved') > }) > call.on('end', () => { > console.log(call.request); > }) > console.log("call object is: ", call); > } > > /** > * Starts an RPC server that receives requests for the Greeter service at > the > * sample server port > */ > function main() { > var server = new grpc.Server(); > server.addProtoService(hello_proto.MultiGreeter.service, {sayHello: > sayHello}); > server.bind('localhost:50051', grpc.ServerCredentials.createInsecure()); > server.start(); > console.log('server is running :) ') > } > > main(); > > Client.js > var PROTO_PATH = __dirname + '/../../protos/hellostreamingworld.proto'; > > var grpc = require('grpc'); > var hello_proto = grpc.load(PROTO_PATH).hellostreamingworld; > > var client = new hello_proto.MultiGreeter('localhost:50051', > grpc.credentials.createInsecure()); > var user; > if (process.argv.length >= 3) { > user = process.argv[2]; > } else { > user = "world"; > } > call = client.sayHello() > call.on('data', (message) => { > console.log("server said: [%s]", message.message); > }) > > call.on('end', () => { > console.log("end @ client"); > }) > > call.write({name: "hadi", num_greetings: "a"}) > call.write({name: "hadi", num_greetings: "a"}) > call.end() // you can ommit this and stop the process by ctrl-c. same > behaviour > > > On Saturday, February 25, 2017 at 3:49:59 AM UTC+3:30, [email protected] > wrote: > > Hi all, > > How can I detect in the server side when a client gets disconnected? The > typical use case could be a chat server where you want to notify other > users when somebody leaves ungracefully. > > I haven't been able to find a clear answer to this question yet. I'm > using Go implementation. > > Regards, > > -- > You received this message because you are subscribed to the Google Groups " > grpc.io" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/grpc-io. > To view this discussion on the web visit > https://groups.google.com/d/msgid/grpc-io/1e69ed74-6db4-4d2a-966e-a5302a696dea%40googlegroups.com > <https://groups.google.com/d/msgid/grpc-io/1e69ed74-6db4-4d2a-966e-a5302a696dea%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CAPK2-4ccoA6SZqaQDf61YkCYaKyf9M_AFR5bnXhaUopk6LRODQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
smime.p7s
Description: S/MIME Cryptographic Signature
