WebSocketcallback来回答消息

我正在用WebSockets进行简单的练习。 我有一个NodeJS脚本,在WebSocket上侦听,接收文件名,打开文件,并通过WebSocket将文件的内容发送回客户端。

这里是代码:

var websocket_server = require('ws').Server; var server = new websocket_server({port: 1234}); var fs = require('fs'); server.on('connection', function connection(socket) {   socket.on('message', function request(file_name)   {     fs.readFile(file_name, function(error, data)     {       if(error)         throw error;       socket.send(data, {binary: true});     });   }); }); 

在客户端,我使用WebSocket来加载图像并将其显示在页面中:

 <!DOCTYPE html> <html> <head> <title>My Little Project</title> <script type = "text/javascript"> var ws = new WebSocket("ws://127.0.0.1:1234"); ws.binarytype = "blob"; ws.onmessage = function(event) { var img = document.createElement("img"); img.src = (window.URL || window.webkitURL).createObjectURL(event.data); document.body.appendChild(img); } ws.onopen = function(event) { ws.send("image1.jpg") } </script> </head> <body> </body> </html> 

现在,这个例子工作正常,我很高兴。 让我难过的是,现在我想要问服务器多个图像,并做一些事情。

我知道我可以通过执行以下操作来序列化所有请求:

 ws.onmessage = function(event) { // Do something with image1.jpg ws.onmessage = function(event) { // Do something with image2.jpg // And so on } ws.send("image2.jpg"); }; ws.send("image1.jpg"); 

但这是串行的,这增加了开销等等。 我想得到的东西是这样的:

 ws.send("image1.jpg", function(event) { // Do something with image1.jpg }); ws.send("image2.jpg", function(event) { // Do something with image2.jpg }); // And so on 

我不知道如何做到这一点既不在客户端也不在服务器上,所以任何帮助将不胜感激。