我是Node.js的新手。 我有我的NodeServer.js文件,其中包含以下代码。
var express = require("express");
var app = express();
var port = 60000;
var io = require('socket.io').listen(app.listen(port));
console.log("Listening on port " + port);
io.sockets.on('connection', function (socket) {
socket.emit('message', { message: 'welcome to the chat' });
socket.on('send', function (data) {
io.sockets.emit('message', data);
});
});
当我从命令提示符运行此命令时,通过以下代码
D:\Path to my application>Node NodeServer.js
显示消息
info - socket.io started
Listening on port 60000
但是当我尝试通过http://127.0.0.1:60000
从浏览器连接到此端口时,它会在命令提示符下显示以下错误
D:\Path to my application\node_modules\expres
s\lib\application.js:119
this._router.handle(req, res, function(err) {
^
TypeError: Cannot call method 'handle' of undefined
我做错了什么?
以下是我的客户端脚本
$(document).ready(function () {
var socket = io.connect('http://127.0.0.1:60000');
});
以下是我的设计
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="jquery-1.10.1.min.js" type="text/javascript"></script>
<script src="http://127.0.0.1:60000/socket.io/socket.io.js" type="text/javascript"></script>
<script src="NodeClient.js" type="text/javascript"></script>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
当我运行我的应用程序时,我收到错误"NetworkError: 404 Not Found - http://127.0.0.1:60000/socket.io/socket.io.js"
答案 0 :(得分:0)
我已通过以下步骤解决了我的问题。
app.get("/", function(req,res){ your logic should go here });
函数。app.use(express.static(__dirname + '/Scripts'));
现在它按照我想要的方式工作。 我不知道这是否正确,但它现在正在为我工作。
答案 1 :(得分:0)
更改以下行
var io = require('socket.io').listen(app.listen(port));
通过
var io = require('socket.io').listen(port);
app.listen(port)返回一个对象,但是我们必须在同一个端口运行socket.io并表达。为此,只需传递端口变量
即可