首页 > 代码库 > 请使用下列bash命令下载、编译和运行本项目

请使用下列bash命令下载、编译和运行本项目

  请使用下列bash命令下载、编译和运行本项目:
  
  $ git clone https://github.com/PerfectExamples/Perfect-Markdown-Editor.git
  
  $ cd Perfect-Markdown-Editor
  
  $ swift build
  
  
  
  如果运行成功,则终端会显示:
  
  [INFO] Starting HTTP server localhost on http://027yeshenghuowang.com/ 0.0.0.0:7777
  
  1
  
  1
  
  这意味着服务器已经成功启动,现在您可以使用浏览器查看地址http://localhost:7777,如下图所示:
  
  作为教学程序,这里采用了没有任何附加页面特效和色彩的素颜HTML,以将代码简化到最为容易理解的程度。当然您可以随时将喜爱的CSS主题加入到源程序。
  
  源代码简介
  
  本项目是在 PerfectTemplate 基础上编制完成的。如果您还不熟悉如何使用Swift编写服务器应用程序,请首先查看这个项目。
  
  Package.swift
  
  即SPM软件包管理器在编译项目时标准的源程序,核心代码如下:
  
  .Package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", majorVersion: 2),
  
  .Package(url: "https://github.com/PerfectlySoft/Perfect-WebSockets.git", majorVersion:2),
  
  .Package(url: "https://github.com/PerfectlySoft/Perfect-Markdown.git", majorVersion: 1)
  
  1
  
  2
  
  3
  
  1
  
  2
  
  3
  
  上述依存关系中, Perfect-HTTPServer 包括了启动一个Swift语言在 mac / Linux 上开发HTTP服务器的所有必要功能;而 Perfect-Markdown 用于Swift语言将Markdown字符串转换为HTML文本。最后的 Perfect-WebSocket 用于服务器支持HTML5/WebSocket扩展。
  
  main.swift
  
  main.swift 是该服务器的门户入口,是一个典型的PerfectTemplate 模板程序。该服务器只提供两个路由资源:
  
  /editor - WebSocket 处理器,即能够处理来自浏览器端的 WebSocket 请求:
  
  public class EditorHandler: WebSocketSessionHandler http://www.chuangshi88.cn A博娱乐/ {
  
  public let socketProtocol : String? = "editor"
  
  // 如果窗口关闭等事件发生则需要关闭socket
  
  public func handleSession(request: HTTPRequest, socket: WebSocket) {
  
  socket.readStringMessage { input, _, _ in
  
  guard let input = input else {
  
  socket.close()
  
  return
  
  }//end guard
  
  // 就这一行代码,把输入的Markdown内容转换为HTML
  
  let output = input.markdownToHTML ?? ""
  
  // 将转化好的HTML文本返回给客户端
  
  socket.sendStringMessage(string: output, final: true) {
  
  self.handleSession(request: request, socket: socket)
  
  }//end send
  
  }//end readStringMessage
  
  }//end handleSession
  
  }//end Handler
  
  最后,配置并启动服务器:
  
  // 只需填写服务器名称、端口,以及上述两个路由句柄
  
  let configuration = [ "servers": [[ "name":"localhost", "port":PORT,
  
  "routes":[
  
  ["method":"get", "uri":"/", "handler":handler],
  
  ["method":"get", "uri":"/\(API)", "handler":socketHandler]
  
  ]]]
  
  ]//end configuration
  
  try HTTPServer.launch(configurationData: configuration)

请使用下列bash命令下载、编译和运行本项目