如何从NodeJS中的消息中提取字符串?具体来说,我正在修改一个简单的聊天室示例,以接受来自客户端的特定命令。
示例:
sock.on('connection', function(client){
var s = the string in client.message...
if(s == "specific string"){
//do this
}
else{
//do that
}
});
我是NodeJS的新手,到目前为止,文档一直非常有用。如果我以错误的方式接近这一点,我肯定会欣赏其他解决方案。感谢。
编辑1:服务器初始化
serv = http.createServer(function(req, res){
res.writeHead(200, {'Content-Type': 'text/html'});
// read index.html and send it to the client
var output = fs.readFileSync('./index.html', 'utf8');
res.end(output);
});
// run on port 8080
serv.listen(8080);
编辑3:我意识到我还不够具体,对不起。这是一个显示我正在关注的教程的链接:http://spechal.com/2011/03/19/super-simple-node-js-chatroom/。
具体来说,我想创建教程中提供的聊天室(我已经能够做到),然后查看人们互相广播的消息,看看它们是否包含特定的字符串。
例如,如果聊天室中的客户端提交了字符串“alpha”(类型为alpha,按Enter键),则此字符串将被广播给所有其他客户端,服务器将通过广播字符串“Alpha已收到”来响应“。对所有客户也是如此。我的确切问题(据我所知)是我不能对我的事件监听器收到的消息进行任何类型的字符串比较。是否可以从他们的消息中提取聊天室成员输入的文本?
答案 0 :(得分:3)
你的'sock.on('data',function(data){})'处理程序在哪里?我认为HTTP示例实际上是你要找的,如下所示。
示例(对于TCP服务器):
var server = net.Server(function(socket) {
socket.setEncoding('ascii');
socket.on('data', function(data) {
// do something with data
});
socket.on('end', function() {
// socket disconnected, cleanup
});
socket.on('error', function(exception) {
// do something with exception
});
});
server.listen(4000);
HTTP Server的示例:
var http = require('http');
var url = require('url');
var fs = require('fs');
var server = http.createServer(function (req, res) {
// I am assuming you will be processing a GET request
// in this example. Otherwise, a POST request would
// require more work since you'd have to look at the
// request body data.
// Parse the URL, specifically looking at the
// query string for a parameter called 'cmd'
// Example: '/chat?cmd=index'
var url_args = url.parse(req.url, true);
// Should have error checking here...
var cmd = url_args.query.cmd;
res.writeHead(200, {'Content-Type': 'text/html'});
var output;
if (cmd == "index") {
// read index.html and send it to the client
output = fs.readFileSync('./index.html', 'utf8');
} else if (cmd.length > 0) {
output = "cmd was not recognized.";
} else {
output = "cmd was not specified in the query string.";
}
res.end(output);
});
server.listen(8080);