【发布时间】:2020-05-30 04:42:12
【问题描述】:
我是 node.js 的新手,在阅读了 Wexler 书的相关部分后,我正在尝试使用 socket.io 创建一个简单的流。
这是我的 node.js 服务器代码:
const port = 3000,
dataIntervalMillis = 5000,
express = require("express"),
app = express(),
crypto = require('crypto');
const server = app
// .get("/", (req, res) => {
// res.send("Run this project by typing in <b>nodemon</b> in the node.js command prompt.");
// })
.listen(port, () => {
console.log(`RNG Server running on port number ${port}`);
}),
io = require("socket.io")(server);
io.on("connection", client => {
console.log("RNG client connected.");
io.emit("New RNG client connection.");
client.on("disconnect", () => {
console.log("RNG client disconnected.");
io.emit("RNG client disconnected.");
});
});
我已经构建了一个独立的 Java 应用程序来测试流:
//import java.io.BufferedReader;
import java.io.InputStream;
//import java.io.InputStreamReader;
//import java.io.PrintStream;
import java.net.Socket;
public class SimpleSocketClientExample {
public static void main(String[] args) {
String server = "localhost";
int port = 3000;
try {
// Connect to the server
System.out.println("Connect to server " + server + " on port " + port + "...");
Socket socket = new Socket( server, port );
System.out.println("...connected.");
//BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream() ) );
InputStream in = socket.getInputStream();
System.out.println("Reading byte...");
int b = in.read();
System.out.println("...byte read.");
// Close our streams
if (in != null) {
in.close();
}
if (socket != null) {
socket.close();
}
}
catch( Exception e ) {
e.printStackTrace();
}
}
}
问题是这个客户端代码挂在in.read() 行。
来自服务器的唯一控制台日志是RNG Server running on port number 3000。服务器日志中没有RNG client connected,说明客户端没有连接(或者连接了别的东西)。
我已经使用在线套接字测试仪测试了我的 node.js 应用程序,但它们似乎也没有连接 - 这表明问题可能出在我的 node.js 服务器应用程序上。
谁能告诉我可能错过了什么?
【问题讨论】:
-
似乎 socket.io 服务器代码仅适用于其客户端代码
标签: node.js socket.io node-streams